diff --git a/src/gallium/drivers/r600/r600_dump.c b/src/gallium/drivers/r600/r600_dump.c index a17ba2366f6..f567250cbd3 100644 --- a/src/gallium/drivers/r600/r600_dump.c +++ b/src/gallium/drivers/r600/r600_dump.c @@ -121,7 +121,6 @@ void print_shader_info(FILE *f , int id, struct r600_shader *shader) PRINT_UINT_MEMBER(uses_atomics); PRINT_UINT_MEMBER(uses_images); PRINT_UINT_MEMBER(uses_helper_invocation); - PRINT_UINT_MEMBER(atomic_base); PRINT_UINT_MEMBER(rat_base); PRINT_UINT_MEMBER(image_size_const_offset); diff --git a/src/gallium/drivers/r600/r600_shader_common.h b/src/gallium/drivers/r600/r600_shader_common.h index 75620a35381..5ff0a247510 100644 --- a/src/gallium/drivers/r600/r600_shader_common.h +++ b/src/gallium/drivers/r600/r600_shader_common.h @@ -112,7 +112,6 @@ struct r600_shader { bool uses_images; bool uses_helper_invocation; bool uses_interpolate_at_sample; - uint8_t atomic_base; uint8_t rat_base; uint8_t image_size_const_offset; bool disable_sb; @@ -122,7 +121,6 @@ struct r600_shader { union r600_shader_key { struct { unsigned nr_cbufs:4; - unsigned first_atomic_counter:4; unsigned image_size_const_offset:5; unsigned color_two_side:1; unsigned alpha_to_one:1; @@ -131,21 +129,17 @@ union r600_shader_key { unsigned dual_source_blend:1; } ps; struct { - unsigned first_atomic_counter:4; unsigned as_es:1; /* export shader */ unsigned as_ls:1; /* local shader */ unsigned as_gs_a:1; } vs; struct { - unsigned first_atomic_counter:4; unsigned as_es:1; } tes; struct { - unsigned first_atomic_counter:4; unsigned prim_mode:3; } tcs; struct { - unsigned first_atomic_counter:4; unsigned tri_strip_adj_fix:1; } gs; }; diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index a87526c85dd..9e6c279d9a5 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -740,38 +740,6 @@ static void r600_update_compressed_colortex_mask(struct r600_samplerview_state * } } -static int r600_get_hw_atomic_count(const struct pipe_context *ctx, - mesa_shader_stage shader) -{ - const struct r600_context *rctx = (struct r600_context *)ctx; - int value = 0; - switch (shader) { - case MESA_SHADER_FRAGMENT: - case MESA_SHADER_COMPUTE: - default: - break; - case MESA_SHADER_VERTEX: - value = rctx->ps_shader->info.file_count[TGSI_FILE_HW_ATOMIC]; - break; - case MESA_SHADER_GEOMETRY: - value = rctx->ps_shader->info.file_count[TGSI_FILE_HW_ATOMIC] + - rctx->vs_shader->info.file_count[TGSI_FILE_HW_ATOMIC]; - break; - case MESA_SHADER_TESS_EVAL: - value = rctx->ps_shader->info.file_count[TGSI_FILE_HW_ATOMIC] + - rctx->vs_shader->info.file_count[TGSI_FILE_HW_ATOMIC] + - (rctx->gs_shader ? rctx->gs_shader->info.file_count[TGSI_FILE_HW_ATOMIC] : 0); - break; - case MESA_SHADER_TESS_CTRL: - value = rctx->ps_shader->info.file_count[TGSI_FILE_HW_ATOMIC] + - rctx->vs_shader->info.file_count[TGSI_FILE_HW_ATOMIC] + - (rctx->gs_shader ? rctx->gs_shader->info.file_count[TGSI_FILE_HW_ATOMIC] : 0) + - rctx->tes_shader->info.file_count[TGSI_FILE_HW_ATOMIC]; - break; - } - return value; -} - static void r600_update_compressed_colortex_mask_images(struct r600_image_state *images) { uint32_t mask = images->enabled_mask; @@ -809,17 +777,14 @@ static inline void r600_shader_selector_key(const struct pipe_context *ctx, if (rctx->ps_shader->current->shader.gs_prim_id_input && !rctx->gs_shader) { key->vs.as_gs_a = true; } - key->vs.first_atomic_counter = r600_get_hw_atomic_count(ctx, MESA_SHADER_VERTEX); break; } case MESA_SHADER_GEOMETRY: - key->gs.first_atomic_counter = r600_get_hw_atomic_count(ctx, MESA_SHADER_GEOMETRY); key->gs.tri_strip_adj_fix = rctx->gs_tri_strip_adj_fix; break; case MESA_SHADER_FRAGMENT: { if (rctx->ps_shader->info.images_declared) key->ps.image_size_const_offset = util_last_bit(rctx->samplers[MESA_SHADER_FRAGMENT].views.enabled_mask); - key->ps.first_atomic_counter = r600_get_hw_atomic_count(ctx, MESA_SHADER_FRAGMENT); key->ps.color_two_side = rctx->rasterizer && rctx->rasterizer->two_side; key->ps.alpha_to_one = rctx->alpha_to_one && rctx->rasterizer && rctx->rasterizer->multisample_enable && @@ -836,11 +801,9 @@ static inline void r600_shader_selector_key(const struct pipe_context *ctx, } case MESA_SHADER_TESS_EVAL: key->tes.as_es = (rctx->gs_shader != NULL); - key->tes.first_atomic_counter = r600_get_hw_atomic_count(ctx, MESA_SHADER_TESS_EVAL); break; case MESA_SHADER_TESS_CTRL: key->tcs.prim_mode = rctx->tes_shader->info.properties[TGSI_PROPERTY_TES_PRIM_MODE]; - key->tcs.first_atomic_counter = r600_get_hw_atomic_count(ctx, MESA_SHADER_TESS_CTRL); break; case MESA_SHADER_COMPUTE: break; diff --git a/src/gallium/drivers/r600/sfn/sfn_shader.cpp b/src/gallium/drivers/r600/sfn/sfn_shader.cpp index 4b7878de462..314ffc6a3ea 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader.cpp @@ -134,12 +134,11 @@ ShaderInput::set_uses_interpolate_at_centroid() int64_t Shader::s_next_shader_id = 1; -Shader::Shader(const char *type_id, unsigned atomic_base): +Shader::Shader(const char *type_id): m_current_block(nullptr), m_type_id(type_id), m_chip_class(ISA_CC_R600), m_next_block(0), - m_atomic_base(atomic_base), m_shader_id(s_next_shader_id++) { m_instr_factory = new InstrFactory(); @@ -587,7 +586,7 @@ Shader::scan_uniforms(nir_variable *uniform) r600_shader_atomic atom = {0}; atom.resource_id = uniform->data.binding; - atom.hw_idx = m_atomic_base + m_next_hwatomic_loc; + atom.hw_idx = m_next_hwatomic_loc; atom.start = uniform->data.offset >> 2; atom.count = natomics; @@ -1803,7 +1802,6 @@ Shader::get_shader_info(r600_shader *sh_info) } sh_info->nhwatomic = m_nhwatomic; - sh_info->atomic_base = m_atomic_base; sh_info->nhwatomic_ranges = m_atomics.size(); for (unsigned i = 0; i < m_atomics.size(); ++i) sh_info->atomics[i] = m_atomics[i]; diff --git a/src/gallium/drivers/r600/sfn/sfn_shader.h b/src/gallium/drivers/r600/sfn/sfn_shader.h index 6ae473238fa..5905d7a7be2 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader.h +++ b/src/gallium/drivers/r600/sfn/sfn_shader.h @@ -273,7 +273,7 @@ protected: std::bitset m_sv_values; - Shader(const char *type_id, unsigned atomic_base); + Shader(const char *type_id); const ShaderInput& input(int base) const; @@ -356,7 +356,6 @@ private: std::vector> m_atomics; uint32_t m_nhwatomic{0}; - uint32_t m_atomic_base{0}; uint32_t m_next_hwatomic_loc{0}; std::unordered_map, std::equal_to, diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp index ea61f6b95c7..e3736126718 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_cs.cpp @@ -11,7 +11,7 @@ namespace r600 { ComputeShader::ComputeShader(UNUSED const r600_shader_key& key, int num_samplers): - Shader("CS", 0), + Shader("CS"), m_image_size_const_offset(num_samplers) { } diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp index 08030d22f3b..23958b9a505 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp @@ -19,7 +19,7 @@ namespace r600 { using std::string; FragmentShader::FragmentShader(const r600_shader_key& key): - Shader("FS", key.ps.first_atomic_counter), + Shader("FS"), m_dual_source_blend(key.ps.dual_source_blend), m_max_color_exports(MAX2(key.ps.nr_cbufs, 1)), m_pos_input(127, false), diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp index dc04d6f50fd..8be6174df74 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp @@ -12,7 +12,7 @@ namespace r600 { GeometryShader::GeometryShader(const r600_shader_key& key): - Shader("GS", key.gs.first_atomic_counter), + Shader("GS"), m_tri_strip_adj_fix(key.gs.tri_strip_adj_fix) { } diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_tess.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_tess.cpp index 5a88111d717..1880b5629d4 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_tess.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_tess.cpp @@ -16,7 +16,7 @@ namespace r600 { using std::string; TCSShader::TCSShader(const r600_shader_key& key): - Shader("TCS", key.tcs.first_atomic_counter), + Shader("TCS"), m_tcs_prim_mode(key.tcs.prim_mode) { } @@ -137,7 +137,7 @@ TCSShader::do_print_properties(std::ostream& os) const TESShader::TESShader(const pipe_stream_output_info *so_info, const r600_shader *gs_shader, const r600_shader_key& key): - VertexStageShader("TES", key.tes.first_atomic_counter), + VertexStageShader("TES"), m_vs_as_gs_a(key.vs.as_gs_a) { if (key.tes.as_es) diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_vs.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_vs.cpp index 0eb32b79a99..4943b49f6db 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_vs.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_vs.cpp @@ -391,7 +391,7 @@ VertexExportForFs::output_register(int loc) const VertexShader::VertexShader(const pipe_stream_output_info *so_info, r600_shader *gs_shader, const r600_shader_key& key): - VertexStageShader("VS", key.vs.first_atomic_counter), + VertexStageShader("VS"), m_vs_as_gs_a(key.vs.as_gs_a) { if (key.vs.as_es)