From: Marek Olšák <[email protected]>

---
 src/gallium/drivers/radeonsi/si_descriptors.c   |  7 ++---
 src/gallium/drivers/radeonsi/si_state.c         | 35 ++++++++++---------------
 src/gallium/drivers/radeonsi/si_state.h         |  3 +--
 src/gallium/drivers/radeonsi/si_state_shaders.c |  2 +-
 4 files changed, 18 insertions(+), 29 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c 
b/src/gallium/drivers/radeonsi/si_descriptors.c
index 762a4b7..3041da6 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -1027,12 +1027,9 @@ void si_init_all_descriptors(struct si_context *sctx)
        sctx->b.b.set_stream_output_targets = si_set_streamout_targets;
        sctx->b.invalidate_buffer = si_invalidate_buffer;
 
-       /* Shader user data.
-        * The number of dwords is set to the upper bound:
-        *   4 pointers per shader, +1 for vertex buffers, +2 for the VS copy 
shader.
-        */
+       /* Shader user data. */
        si_init_atom(sctx, &sctx->shader_userdata.atom, 
&sctx->atoms.s.shader_userdata,
-                    si_emit_shader_userdata, (SI_NUM_SHADERS * 4 + 1 + 2) * 4);
+                    si_emit_shader_userdata);
 
        /* Set default and immutable mappings. */
        si_set_user_data_base(sctx, PIPE_SHADER_VERTEX, 
R_00B130_SPI_SHADER_USER_DATA_VS_0);
diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index dd0fe0e..183ae4c 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -47,11 +47,9 @@ si_init_external_atom(struct si_context *sctx, struct 
r600_atom *atom,
 /* Initialize an atom owned by radeonsi.  */
 void si_init_atom(struct si_context *sctx, struct r600_atom *atom,
                  struct r600_atom **list_elem,
-                 void (*emit_func)(struct si_context *ctx, struct r600_atom 
*state),
-                 unsigned num_dw)
+                 void (*emit_func)(struct si_context *ctx, struct r600_atom 
*state))
 {
        atom->emit = (void*)emit_func;
-       atom->num_dw = num_dw;
        atom->dirty = false;
        atom->id = list_elem - sctx->atoms.array + 1; /* index+1 in the atom 
array */
        *list_elem = atom;
@@ -2164,11 +2162,6 @@ static void si_set_framebuffer_state(struct pipe_context 
*ctx,
 
        si_update_poly_offset_state(sctx);
        si_mark_atom_dirty(sctx, &sctx->cb_target_mask);
-
-       sctx->framebuffer.atom.num_dw = state->nr_cbufs*16 + (8 - 
state->nr_cbufs)*3;
-       sctx->framebuffer.atom.num_dw += state->zsbuf ? 26 : 4;
-       sctx->framebuffer.atom.num_dw += 3; /* WINDOW_SCISSOR_BR */
-       sctx->framebuffer.atom.num_dw += 18; /* MSAA sample locations */
        si_mark_atom_dirty(sctx, &sctx->framebuffer.atom);
 
        if (sctx->framebuffer.nr_samples != old_nr_samples) {
@@ -3056,19 +3049,19 @@ void si_init_state_functions(struct si_context *sctx)
        si_init_external_atom(sctx, &sctx->b.streamout.begin_atom, 
&sctx->atoms.s.streamout_begin);
        si_init_external_atom(sctx, &sctx->b.streamout.enable_atom, 
&sctx->atoms.s.streamout_enable);
 
-       si_init_atom(sctx, &sctx->cache_flush, &sctx->atoms.s.cache_flush, 
si_emit_cache_flush, 24);
-       si_init_atom(sctx, &sctx->framebuffer.atom, &sctx->atoms.s.framebuffer, 
si_emit_framebuffer_state, 0);
-       si_init_atom(sctx, &sctx->msaa_sample_locs, 
&sctx->atoms.s.msaa_sample_locs, si_emit_msaa_sample_locs, 18);
-       si_init_atom(sctx, &sctx->db_render_state, 
&sctx->atoms.s.db_render_state, si_emit_db_render_state, 10);
-       si_init_atom(sctx, &sctx->msaa_config, &sctx->atoms.s.msaa_config, 
si_emit_msaa_config, 10);
-       si_init_atom(sctx, &sctx->sample_mask.atom, &sctx->atoms.s.sample_mask, 
si_emit_sample_mask, 4);
-       si_init_atom(sctx, &sctx->cb_target_mask, 
&sctx->atoms.s.cb_target_mask, si_emit_cb_target_mask, 3);
-       si_init_atom(sctx, &sctx->blend_color.atom, &sctx->atoms.s.blend_color, 
si_emit_blend_color, 6);
-       si_init_atom(sctx, &sctx->clip_regs, &sctx->atoms.s.clip_regs, 
si_emit_clip_regs, 6);
-       si_init_atom(sctx, &sctx->clip_state.atom, &sctx->atoms.s.clip_state, 
si_emit_clip_state, 2+6*4);
-       si_init_atom(sctx, &sctx->scissors.atom, &sctx->atoms.s.scissors, 
si_emit_scissors, 16*4);
-       si_init_atom(sctx, &sctx->viewports.atom, &sctx->atoms.s.viewports, 
si_emit_viewports, 16*8);
-       si_init_atom(sctx, &sctx->stencil_ref.atom, &sctx->atoms.s.stencil_ref, 
si_emit_stencil_ref, 4);
+       si_init_atom(sctx, &sctx->cache_flush, &sctx->atoms.s.cache_flush, 
si_emit_cache_flush);
+       si_init_atom(sctx, &sctx->framebuffer.atom, &sctx->atoms.s.framebuffer, 
si_emit_framebuffer_state);
+       si_init_atom(sctx, &sctx->msaa_sample_locs, 
&sctx->atoms.s.msaa_sample_locs, si_emit_msaa_sample_locs);
+       si_init_atom(sctx, &sctx->db_render_state, 
&sctx->atoms.s.db_render_state, si_emit_db_render_state);
+       si_init_atom(sctx, &sctx->msaa_config, &sctx->atoms.s.msaa_config, 
si_emit_msaa_config);
+       si_init_atom(sctx, &sctx->sample_mask.atom, &sctx->atoms.s.sample_mask, 
si_emit_sample_mask);
+       si_init_atom(sctx, &sctx->cb_target_mask, 
&sctx->atoms.s.cb_target_mask, si_emit_cb_target_mask);
+       si_init_atom(sctx, &sctx->blend_color.atom, &sctx->atoms.s.blend_color, 
si_emit_blend_color);
+       si_init_atom(sctx, &sctx->clip_regs, &sctx->atoms.s.clip_regs, 
si_emit_clip_regs);
+       si_init_atom(sctx, &sctx->clip_state.atom, &sctx->atoms.s.clip_state, 
si_emit_clip_state);
+       si_init_atom(sctx, &sctx->scissors.atom, &sctx->atoms.s.scissors, 
si_emit_scissors);
+       si_init_atom(sctx, &sctx->viewports.atom, &sctx->atoms.s.viewports, 
si_emit_viewports);
+       si_init_atom(sctx, &sctx->stencil_ref.atom, &sctx->atoms.s.stencil_ref, 
si_emit_stencil_ref);
 
        sctx->b.b.create_blend_state = si_create_blend_state;
        sctx->b.b.bind_blend_state = si_bind_blend_state;
diff --git a/src/gallium/drivers/radeonsi/si_state.h 
b/src/gallium/drivers/radeonsi/si_state.h
index b15f971..9a1d087 100644
--- a/src/gallium/drivers/radeonsi/si_state.h
+++ b/src/gallium/drivers/radeonsi/si_state.h
@@ -267,8 +267,7 @@ struct si_shader_selector;
 
 void si_init_atom(struct si_context *sctx, struct r600_atom *atom,
                  struct r600_atom **list_elem,
-                 void (*emit_func)(struct si_context *ctx, struct r600_atom 
*state),
-                 unsigned num_dw);
+                 void (*emit_func)(struct si_context *ctx, struct r600_atom 
*state));
 boolean si_is_format_supported(struct pipe_screen *screen,
                                enum pipe_format format,
                                enum pipe_texture_target target,
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c 
b/src/gallium/drivers/radeonsi/si_state_shaders.c
index cef3282..78b68bc 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -1481,7 +1481,7 @@ void si_update_shaders(struct si_context *sctx)
 
 void si_init_shader_functions(struct si_context *sctx)
 {
-       si_init_atom(sctx, &sctx->spi_map, &sctx->atoms.s.spi_map, 
si_emit_spi_map, 2+31);
+       si_init_atom(sctx, &sctx->spi_map, &sctx->atoms.s.spi_map, 
si_emit_spi_map);
 
        sctx->b.b.create_vs_state = si_create_vs_state;
        sctx->b.b.create_tcs_state = si_create_tcs_state;
-- 
2.1.4

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to