mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 20:18:12 +02:00
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:
parent
ecb9bebdef
commit
675056ab95
10 changed files with 9 additions and 56 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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>,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue