radeonsi: remove si_atom::id
authorMarek Olšák <marek.olsak@amd.com>
Mon, 9 Apr 2018 01:03:51 +0000 (21:03 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 27 Apr 2018 21:56:04 +0000 (17:56 -0400)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_pipe.h
src/gallium/drivers/radeonsi/si_state.c
src/gallium/drivers/radeonsi/si_state.h
src/gallium/drivers/radeonsi/si_state_draw.c

index 37ff05082cf8b70248b096ac479d5a28b242741e..41f88b9688e69663ceec9a29d0df6e6d4f89dba4 100644 (file)
@@ -1339,11 +1339,16 @@ si_invalidate_draw_sh_constants(struct si_context *sctx)
        sctx->last_base_vertex = SI_BASE_VERTEX_UNKNOWN;
 }
 
+static inline unsigned
+si_get_atom_bit(struct si_context *sctx, struct si_atom *atom)
+{
+       return 1 << (atom - sctx->atoms.array);
+}
+
 static inline void
-si_set_atom_dirty(struct si_context *sctx,
-                 struct si_atom *atom, bool dirty)
+si_set_atom_dirty(struct si_context *sctx, struct si_atom *atom, bool dirty)
 {
-       unsigned bit = 1 << atom->id;
+       unsigned bit = si_get_atom_bit(sctx, atom);
 
        if (dirty)
                sctx->dirty_atoms |= bit;
@@ -1352,17 +1357,13 @@ si_set_atom_dirty(struct si_context *sctx,
 }
 
 static inline bool
-si_is_atom_dirty(struct si_context *sctx,
-                struct si_atom *atom)
+si_is_atom_dirty(struct si_context *sctx, struct si_atom *atom)
 {
-       unsigned bit = 1 << atom->id;
-
-       return sctx->dirty_atoms & bit;
+       return (sctx->dirty_atoms & si_get_atom_bit(sctx, atom)) != 0;
 }
 
 static inline void
-si_mark_atom_dirty(struct si_context *sctx,
-                  struct si_atom *atom)
+si_mark_atom_dirty(struct si_context *sctx, struct si_atom *atom)
 {
        si_set_atom_dirty(sctx, atom, true);
 }
index 13c8fa30d6cb67d172f4133d99705bed00f463b0..90416b32b717194f59111418a970a4cf9a63e305 100644 (file)
 #include "util/u_resource.h"
 #include "util/u_upload_mgr.h"
 
-/* Initialize an external atom (owned by ../radeon). */
-static void
-si_init_external_atom(struct si_context *sctx, struct si_atom *atom)
-{
-       atom->id = atom - sctx->atoms.array;
-}
-
 /* Initialize an atom owned by radeonsi.  */
 void si_init_atom(struct si_context *sctx, struct si_atom *atom,
                  void (*emit_func)(struct si_context *ctx, struct si_atom *state))
 {
        atom->emit = emit_func;
-       atom->id = atom - sctx->atoms.array;
 }
 
 static unsigned si_map_swizzle(unsigned swizzle)
@@ -4526,12 +4518,6 @@ static void si_init_config(struct si_context *sctx);
 
 void si_init_state_functions(struct si_context *sctx)
 {
-       si_init_external_atom(sctx, &sctx->atoms.s.render_cond);
-       si_init_external_atom(sctx, &sctx->atoms.s.streamout_begin);
-       si_init_external_atom(sctx, &sctx->atoms.s.streamout_enable);
-       si_init_external_atom(sctx, &sctx->atoms.s.scissors);
-       si_init_external_atom(sctx, &sctx->atoms.s.viewports);
-
        si_init_atom(sctx, &sctx->atoms.s.framebuffer, si_emit_framebuffer_state);
        si_init_atom(sctx, &sctx->atoms.s.msaa_sample_locs, si_emit_msaa_sample_locs);
        si_init_atom(sctx, &sctx->atoms.s.db_render_state, si_emit_db_render_state);
index 6c9899d9468f6efa0b31154514fd299e15c9ac72..4ee69b95bd31338bcce64988912510dca81f5f67 100644 (file)
@@ -45,11 +45,11 @@ struct si_shader_selector;
 struct r600_texture;
 struct si_qbo_state;
 
-/* This encapsulates a state or an operation which can emitted into the GPU
- * command stream. */
+/* State atoms are callbacks which write a sequence of packets into a GPU
+ * command buffer (AKA indirect buffer, AKA IB, AKA command stream, AKA CS).
+ */
 struct si_atom {
        void (*emit)(struct si_context *ctx, struct si_atom *state);
-       unsigned short          id;
 };
 
 struct si_state_blend {
index 8ed87bfac54cf4ccff394d329926dfd244ac28ea..8d41988e382a9abbe7cef47151b4214e52ab0e7f 100644 (file)
@@ -1436,7 +1436,7 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
                unsigned masked_atoms = 0;
 
                if (unlikely(sctx->flags & SI_CONTEXT_FLUSH_FOR_RENDER_COND))
-                       masked_atoms |= 1u << sctx->atoms.s.render_cond.id;
+                       masked_atoms |= si_get_atom_bit(sctx, &sctx->atoms.s.render_cond);
 
                if (!si_upload_graphics_shader_descriptors(sctx))
                        return;