radeonsi: initialize atom IDs for external atoms
authorMarek Olšák <marek.olsak@amd.com>
Fri, 28 Aug 2015 22:03:02 +0000 (00:03 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 1 Sep 2015 19:51:14 +0000 (21:51 +0200)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
src/gallium/drivers/radeonsi/si_pipe.c
src/gallium/drivers/radeonsi/si_state.c

index 03b0ee4a465eb2f053a844e76ad6b2018378fd0a..e95824add40222da757611ed81fd63cf22ac74fd 100644 (file)
@@ -142,10 +142,6 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen,
        sctx->b.rings.gfx.flush = si_context_gfx_flush;
 
        si_init_all_descriptors(sctx);
-
-       sctx->atoms.s.streamout_begin = &sctx->b.streamout.begin_atom;
-       sctx->atoms.s.streamout_enable = &sctx->b.streamout.enable_atom;
-
        si_init_state_functions(sctx);
        si_init_shader_functions(sctx);
 
index cc34f3bc4f6952df9bbbe600cc16e17a105579f6..88964e1a545d6ca4c1889e339368917b9f363451 100644 (file)
 #include "util/u_memory.h"
 #include "util/u_pstipple.h"
 
+/* Initialize an external atom (owned by ../radeon). */
+static void
+si_init_external_atom(struct si_context *sctx, struct r600_atom *atom,
+                     struct r600_atom **list_elem)
+{
+       atom->id = list_elem - sctx->atoms.array + 1;
+       *list_elem = 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),
@@ -3027,6 +3037,9 @@ static void si_init_config(struct si_context *sctx);
 
 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);