Re: [Mesa-dev] [PATCH 1/5] r600g: unify vgt states
On Wed, Feb 27, 2013 at 6:11 PM, Marek Olšák mar...@gmail.com wrote: The states were split because we thought it caused a hardlock. Now we know the hardlock was caused by something else and has since been fixed. For the serie: Reviewed-by: Jerome Glisse jgli...@redhat.com --- src/gallium/drivers/r600/evergreen_state.c |3 +-- src/gallium/drivers/r600/r600_hw_context.c |1 - src/gallium/drivers/r600/r600_pipe.h |6 -- src/gallium/drivers/r600/r600_state.c|3 +-- src/gallium/drivers/r600/r600_state_common.c | 22 +++--- 5 files changed, 9 insertions(+), 26 deletions(-) diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 205bbc5..244989d 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -2615,8 +2615,7 @@ void evergreen_init_state_functions(struct r600_context *rctx) r600_init_atom(rctx, rctx-samplers[PIPE_SHADER_GEOMETRY].views.atom, id++, evergreen_emit_gs_sampler_views, 0); r600_init_atom(rctx, rctx-samplers[PIPE_SHADER_FRAGMENT].views.atom, id++, evergreen_emit_ps_sampler_views, 0); - r600_init_atom(rctx, rctx-vgt_state.atom, id++, r600_emit_vgt_state, 6); - r600_init_atom(rctx, rctx-vgt2_state.atom, id++, r600_emit_vgt2_state, 3); + r600_init_atom(rctx, rctx-vgt_state.atom, id++, r600_emit_vgt_state, 7); if (rctx-chip_class == EVERGREEN) { r600_init_atom(rctx, rctx-sample_mask.atom, id++, evergreen_emit_sample_mask, 3); diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c index 91af6b8..b78b004 100644 --- a/src/gallium/drivers/r600/r600_hw_context.c +++ b/src/gallium/drivers/r600/r600_hw_context.c @@ -827,7 +827,6 @@ void r600_begin_new_cs(struct r600_context *ctx) ctx-framebuffer.atom.dirty = true; ctx-poly_offset_state.atom.dirty = true; ctx-vgt_state.atom.dirty = true; - ctx-vgt2_state.atom.dirty = true; ctx-sample_mask.atom.dirty = true; ctx-scissor.atom.dirty = true; ctx-config_state.atom.dirty = true; diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 570a284..4cfade1 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -127,10 +127,6 @@ struct r600_vgt_state { struct r600_atom atom; uint32_t vgt_multi_prim_ib_reset_en; uint32_t vgt_multi_prim_ib_reset_indx; -}; - -struct r600_vgt2_state { - struct r600_atom atom; uint32_t vgt_indx_offset; }; @@ -506,7 +502,6 @@ struct r600_context { struct r600_config_stateconfig_state; struct r600_stencil_ref_state stencil_ref; struct r600_vgt_state vgt_state; - struct r600_vgt2_state vgt2_state; struct r600_viewport_state viewport; /* Shaders and shader resources. */ struct r600_cso_state vertex_fetch_shader; @@ -733,7 +728,6 @@ void r600_emit_cso_state(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_alphatest_state(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_blend_color(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_vgt_state(struct r600_context *rctx, struct r600_atom *atom); -void r600_emit_vgt2_state(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_clip_misc_state(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_stencil_ref(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_viewport_state(struct r600_context *rctx, struct r600_atom *atom); diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index bbff6bd..fd3b14e 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -2312,8 +2312,7 @@ void r600_init_state_functions(struct r600_context *rctx) r600_init_atom(rctx, rctx-samplers[PIPE_SHADER_FRAGMENT].views.atom, id++, r600_emit_ps_sampler_views, 0); r600_init_atom(rctx, rctx-vertex_buffer_state.atom, id++, r600_emit_vertex_buffers, 0); - r600_init_atom(rctx, rctx-vgt_state.atom, id++, r600_emit_vgt_state, 6); - r600_init_atom(rctx, rctx-vgt2_state.atom, id++, r600_emit_vgt2_state, 3); + r600_init_atom(rctx, rctx-vgt_state.atom, id++, r600_emit_vgt_state, 7); r600_init_atom(rctx, rctx-seamless_cube_map.atom, id++, r600_emit_seamless_cube_map, 3); r600_init_atom(rctx, rctx-sample_mask.atom, id++, r600_emit_sample_mask, 3); diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 4c68506..8906695 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++
[Mesa-dev] [PATCH 1/5] r600g: unify vgt states
The states were split because we thought it caused a hardlock. Now we know the hardlock was caused by something else and has since been fixed. --- src/gallium/drivers/r600/evergreen_state.c |3 +-- src/gallium/drivers/r600/r600_hw_context.c |1 - src/gallium/drivers/r600/r600_pipe.h |6 -- src/gallium/drivers/r600/r600_state.c|3 +-- src/gallium/drivers/r600/r600_state_common.c | 22 +++--- 5 files changed, 9 insertions(+), 26 deletions(-) diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 205bbc5..244989d 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -2615,8 +2615,7 @@ void evergreen_init_state_functions(struct r600_context *rctx) r600_init_atom(rctx, rctx-samplers[PIPE_SHADER_GEOMETRY].views.atom, id++, evergreen_emit_gs_sampler_views, 0); r600_init_atom(rctx, rctx-samplers[PIPE_SHADER_FRAGMENT].views.atom, id++, evergreen_emit_ps_sampler_views, 0); - r600_init_atom(rctx, rctx-vgt_state.atom, id++, r600_emit_vgt_state, 6); - r600_init_atom(rctx, rctx-vgt2_state.atom, id++, r600_emit_vgt2_state, 3); + r600_init_atom(rctx, rctx-vgt_state.atom, id++, r600_emit_vgt_state, 7); if (rctx-chip_class == EVERGREEN) { r600_init_atom(rctx, rctx-sample_mask.atom, id++, evergreen_emit_sample_mask, 3); diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c index 91af6b8..b78b004 100644 --- a/src/gallium/drivers/r600/r600_hw_context.c +++ b/src/gallium/drivers/r600/r600_hw_context.c @@ -827,7 +827,6 @@ void r600_begin_new_cs(struct r600_context *ctx) ctx-framebuffer.atom.dirty = true; ctx-poly_offset_state.atom.dirty = true; ctx-vgt_state.atom.dirty = true; - ctx-vgt2_state.atom.dirty = true; ctx-sample_mask.atom.dirty = true; ctx-scissor.atom.dirty = true; ctx-config_state.atom.dirty = true; diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 570a284..4cfade1 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -127,10 +127,6 @@ struct r600_vgt_state { struct r600_atom atom; uint32_t vgt_multi_prim_ib_reset_en; uint32_t vgt_multi_prim_ib_reset_indx; -}; - -struct r600_vgt2_state { - struct r600_atom atom; uint32_t vgt_indx_offset; }; @@ -506,7 +502,6 @@ struct r600_context { struct r600_config_stateconfig_state; struct r600_stencil_ref_state stencil_ref; struct r600_vgt_state vgt_state; - struct r600_vgt2_state vgt2_state; struct r600_viewport_state viewport; /* Shaders and shader resources. */ struct r600_cso_state vertex_fetch_shader; @@ -733,7 +728,6 @@ void r600_emit_cso_state(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_alphatest_state(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_blend_color(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_vgt_state(struct r600_context *rctx, struct r600_atom *atom); -void r600_emit_vgt2_state(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_clip_misc_state(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_stencil_ref(struct r600_context *rctx, struct r600_atom *atom); void r600_emit_viewport_state(struct r600_context *rctx, struct r600_atom *atom); diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index bbff6bd..fd3b14e 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -2312,8 +2312,7 @@ void r600_init_state_functions(struct r600_context *rctx) r600_init_atom(rctx, rctx-samplers[PIPE_SHADER_FRAGMENT].views.atom, id++, r600_emit_ps_sampler_views, 0); r600_init_atom(rctx, rctx-vertex_buffer_state.atom, id++, r600_emit_vertex_buffers, 0); - r600_init_atom(rctx, rctx-vgt_state.atom, id++, r600_emit_vgt_state, 6); - r600_init_atom(rctx, rctx-vgt2_state.atom, id++, r600_emit_vgt2_state, 3); + r600_init_atom(rctx, rctx-vgt_state.atom, id++, r600_emit_vgt_state, 7); r600_init_atom(rctx, rctx-seamless_cube_map.atom, id++, r600_emit_seamless_cube_map, 3); r600_init_atom(rctx, rctx-sample_mask.atom, id++, r600_emit_sample_mask, 3); diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 4c68506..8906695 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -192,15 +192,9 @@ void r600_emit_vgt_state(struct r600_context *rctx, struct r600_atom *atom) struct r600_vgt_state *a = (struct r600_vgt_state *)atom; r600_write_context_reg(cs,