r600: remove r600_get_hw_atomic_count

This is not used anymore and the atomic_base
could interfere with some operations.

Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40170>
This commit is contained in:
Patrick Lerda 2026-03-02 13:11:52 +01:00 committed by Marge Bot
parent ecb9bebdef
commit 675056ab95
10 changed files with 9 additions and 56 deletions

View file

@ -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);

View file

@ -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;
};

View file

@ -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;

View file

@ -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];

View file

@ -273,7 +273,7 @@ protected:
std::bitset<es_last> 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<r600_shader_atomic, Allocator<r600_shader_atomic>> m_atomics;
uint32_t m_nhwatomic{0};
uint32_t m_atomic_base{0};
uint32_t m_next_hwatomic_loc{0};
std::unordered_map<int, int,
std::hash<int>, std::equal_to<int>,

View file

@ -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)
{
}

View file

@ -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),

View file

@ -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)
{
}

View file

@ -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)

View file

@ -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)