mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-17 20:28:05 +02:00
radeonsi: remove dead get_frag_coord_from_pixel_coord optimization
It's applied unconditionally by ac_nir_lower_ps_early. It was probably replaced by that at some point. Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41226>
This commit is contained in:
parent
c9c0dce948
commit
b63f866c84
11 changed files with 1 additions and 81 deletions
|
|
@ -93,8 +93,6 @@ struct aco_ps_prolog_info {
|
|||
bool force_linear_center_interp;
|
||||
|
||||
unsigned samplemask_log_ps_iter;
|
||||
bool get_frag_coord_from_pixel_coord;
|
||||
bool pixel_center_integer;
|
||||
bool force_samplemask_to_helper_invocation;
|
||||
unsigned num_interp_inputs;
|
||||
unsigned colors_read;
|
||||
|
|
|
|||
|
|
@ -167,32 +167,6 @@ overwrite_samplemask_arg(isel_context* ctx, const struct aco_ps_prolog_info* fin
|
|||
is_helper_invoc);
|
||||
}
|
||||
}
|
||||
void
|
||||
overwrite_pos_xy_args(isel_context* ctx, const struct aco_ps_prolog_info* finfo)
|
||||
{
|
||||
if (!finfo->get_frag_coord_from_pixel_coord)
|
||||
return;
|
||||
|
||||
Builder bld(ctx->program, ctx->block);
|
||||
Temp pos_fixed_pt = get_arg(ctx, ctx->args->pos_fixed_pt);
|
||||
|
||||
for (unsigned i = 0; i < 2; i++) {
|
||||
if (!ctx->args->frag_pos[i].used)
|
||||
continue;
|
||||
|
||||
Temp t;
|
||||
if (i)
|
||||
t = bld.vop2(aco_opcode::v_lshrrev_b32, bld.def(v1), Operand::c32(16), pos_fixed_pt);
|
||||
else
|
||||
t = bld.vop2(aco_opcode::v_and_b32, bld.def(v1), Operand::c32(0xffff), pos_fixed_pt);
|
||||
|
||||
t = bld.vop1(aco_opcode::v_cvt_f32_u32, bld.def(v1), t);
|
||||
if (!finfo->pixel_center_integer)
|
||||
t = bld.vop2(aco_opcode::v_add_f32, bld.def(v1), Operand::c32(0x3f000000 /*0.5*/), t);
|
||||
|
||||
ctx->arg_temps[ctx->args->frag_pos[i].arg_index] = t;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
passthrough_all_args(isel_context* ctx, std::vector<Operand>& regs)
|
||||
|
|
@ -297,7 +271,6 @@ select_ps_prolog(Program* program, void* pinfo, ac_shader_config* config,
|
|||
|
||||
overwrite_interp_args(&ctx, finfo);
|
||||
overwrite_samplemask_arg(&ctx, finfo);
|
||||
overwrite_pos_xy_args(&ctx, finfo);
|
||||
|
||||
std::vector<Operand> regs;
|
||||
passthrough_all_args(&ctx, regs);
|
||||
|
|
|
|||
|
|
@ -856,8 +856,7 @@ static void si_preprocess_nir(struct si_nir_shader_ctx *ctx)
|
|||
.ps_iter_samples = key->ps.part.prolog.samplemask_log_ps_iter ?
|
||||
(1 << key->ps.part.prolog.samplemask_log_ps_iter) :
|
||||
(key->ps.part.prolog.force_persp_sample_interp ||
|
||||
key->ps.part.prolog.force_linear_sample_interp ? 2 :
|
||||
(key->ps.part.prolog.get_frag_coord_from_pixel_coord ? 1 : 0)),
|
||||
key->ps.part.prolog.force_linear_sample_interp ? 2 : 0),
|
||||
|
||||
.fbfetch_is_1D = key->ps.mono.fbfetch_is_1D,
|
||||
.fbfetch_layered = key->ps.mono.fbfetch_layered,
|
||||
|
|
@ -1742,15 +1741,12 @@ static void si_get_ps_prolog_key(struct si_shader *shader, union si_shader_part_
|
|||
key->ps_prolog.states.force_linear_center_interp ||
|
||||
key->ps_prolog.states.bc_optimize_for_persp || key->ps_prolog.states.bc_optimize_for_linear ||
|
||||
key->ps_prolog.states.samplemask_log_ps_iter ||
|
||||
key->ps_prolog.states.get_frag_coord_from_pixel_coord ||
|
||||
key->ps_prolog.states.force_samplemask_to_helper_invocation);
|
||||
key->ps_prolog.fragcoord_usage_mask =
|
||||
G_0286CC_POS_X_FLOAT_ENA(shader->config.spi_ps_input_ena) |
|
||||
(G_0286CC_POS_Y_FLOAT_ENA(shader->config.spi_ps_input_ena) << 1) |
|
||||
(G_0286CC_POS_Z_FLOAT_ENA(shader->config.spi_ps_input_ena) << 2) |
|
||||
(G_0286CC_POS_W_FLOAT_ENA(shader->config.spi_ps_input_ena) << 3);
|
||||
key->ps_prolog.pixel_center_integer = key->ps_prolog.fragcoord_usage_mask &&
|
||||
shader->selector->info.base.fs.pixel_center_integer;
|
||||
|
||||
if (shader->key.ps.part.prolog.poly_stipple)
|
||||
shader->info.uses_vmem_load_other = true;
|
||||
|
|
@ -1852,7 +1848,6 @@ static bool si_need_ps_prolog(const union si_shader_part_key *key)
|
|||
key->ps_prolog.states.bc_optimize_for_persp ||
|
||||
key->ps_prolog.states.bc_optimize_for_linear || key->ps_prolog.states.poly_stipple ||
|
||||
key->ps_prolog.states.samplemask_log_ps_iter ||
|
||||
key->ps_prolog.states.get_frag_coord_from_pixel_coord ||
|
||||
key->ps_prolog.states.force_samplemask_to_helper_invocation;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -536,7 +536,6 @@ struct si_ps_prolog_bits {
|
|||
unsigned bc_optimize_for_persp : 1;
|
||||
unsigned bc_optimize_for_linear : 1;
|
||||
unsigned samplemask_log_ps_iter : 2;
|
||||
unsigned get_frag_coord_from_pixel_coord : 1;
|
||||
unsigned force_samplemask_to_helper_invocation : 1;
|
||||
};
|
||||
|
||||
|
|
@ -566,7 +565,6 @@ union si_shader_part_key {
|
|||
unsigned colors_read : 8; /* color input components read */
|
||||
unsigned num_interp_inputs : 5; /* BCOLOR is at this location */
|
||||
unsigned fragcoord_usage_mask : 4;
|
||||
unsigned pixel_center_integer : 1;
|
||||
unsigned wqm : 1;
|
||||
uint8_t color_attr_index[2];
|
||||
uint8_t color_interp[2]; /* AC_COLOR_INTERP_* */
|
||||
|
|
|
|||
|
|
@ -255,8 +255,6 @@ si_aco_build_ps_prolog(struct aco_compiler_options *options,
|
|||
.force_linear_center_interp = key->ps_prolog.states.force_linear_center_interp,
|
||||
|
||||
.samplemask_log_ps_iter = key->ps_prolog.states.samplemask_log_ps_iter,
|
||||
.get_frag_coord_from_pixel_coord = key->ps_prolog.states.get_frag_coord_from_pixel_coord,
|
||||
.pixel_center_integer = key->ps_prolog.pixel_center_integer,
|
||||
.force_samplemask_to_helper_invocation = key->ps_prolog.states.force_samplemask_to_helper_invocation,
|
||||
.num_interp_inputs = key->ps_prolog.num_interp_inputs,
|
||||
.colors_read = key->ps_prolog.colors_read,
|
||||
|
|
|
|||
|
|
@ -607,8 +607,6 @@ static void si_dump_shader_key(const struct si_shader *shader, FILE *f)
|
|||
key->ps.part.prolog.bc_optimize_for_linear);
|
||||
fprintf(f, " prolog.samplemask_log_ps_iter = %u\n",
|
||||
key->ps.part.prolog.samplemask_log_ps_iter);
|
||||
fprintf(f, " prolog.get_frag_coord_from_pixel_coord = %u\n",
|
||||
key->ps.part.prolog.get_frag_coord_from_pixel_coord);
|
||||
fprintf(f, " prolog.force_samplemask_to_helper_invocation = %u\n",
|
||||
key->ps.part.prolog.force_samplemask_to_helper_invocation);
|
||||
fprintf(f, " epilog.spi_shader_col_format = 0x%x\n",
|
||||
|
|
|
|||
|
|
@ -369,9 +369,6 @@ static void gather_instruction(const struct nir_shader *nir, struct si_shader_in
|
|||
if (intr->intrinsic == nir_intrinsic_load_barycentric_at_sample)
|
||||
info->uses_interp_at_sample = true;
|
||||
break;
|
||||
case nir_intrinsic_load_frag_coord:
|
||||
info->reads_frag_coord_mask |= nir_def_components_read(&intr->def);
|
||||
break;
|
||||
case nir_intrinsic_load_input:
|
||||
case nir_intrinsic_load_per_vertex_input:
|
||||
case nir_intrinsic_load_per_primitive_input:
|
||||
|
|
@ -525,7 +522,6 @@ void si_nir_gather_info(struct si_screen *sscreen, struct nir_shader *nir,
|
|||
info->base.fs.uses_sample_shading = nir->info.fs.uses_sample_shading;
|
||||
info->base.fs.early_fragment_tests = nir->info.fs.early_fragment_tests;
|
||||
info->base.fs.post_depth_coverage = nir->info.fs.post_depth_coverage;
|
||||
info->base.fs.pixel_center_integer = nir->info.fs.pixel_center_integer;
|
||||
info->base.fs.depth_layout = nir->info.fs.depth_layout;
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,6 @@ struct si_shader_info {
|
|||
bool uses_sample_shading:1;
|
||||
bool early_fragment_tests:1;
|
||||
bool post_depth_coverage:1;
|
||||
bool pixel_center_integer:1;
|
||||
enum gl_frag_depth_layout depth_layout:3;
|
||||
} fs;
|
||||
|
||||
|
|
@ -172,9 +171,6 @@ struct si_shader_info {
|
|||
*/
|
||||
uint8_t writes_1_if_tex_is_1;
|
||||
|
||||
/* frag coord and sample pos per component read mask. */
|
||||
uint8_t reads_frag_coord_mask;
|
||||
|
||||
unsigned ngg_cull_vert_threshold; /* UINT32_MAX = disabled */
|
||||
enum mesa_prim rast_prim;
|
||||
|
||||
|
|
|
|||
|
|
@ -678,28 +678,6 @@ void si_llvm_build_ps_prolog(struct si_shader_context *ctx, union si_shader_part
|
|||
args->ac.sample_coverage.arg_index);
|
||||
}
|
||||
|
||||
if (key->ps_prolog.states.get_frag_coord_from_pixel_coord) {
|
||||
LLVMValueRef pixel_coord = ac_get_arg(&ctx->ac, args->ac.pos_fixed_pt);
|
||||
pixel_coord = LLVMBuildBitCast(ctx->ac.builder, pixel_coord, ctx->ac.v2i16, "");
|
||||
pixel_coord = LLVMBuildUIToFP(ctx->ac.builder, pixel_coord, ctx->ac.v2f32, "");
|
||||
|
||||
if (!key->ps_prolog.pixel_center_integer) {
|
||||
LLVMValueRef vec2_half = LLVMConstVector((LLVMValueRef[]){LLVMConstReal(ctx->ac.f32, 0.5),
|
||||
LLVMConstReal(ctx->ac.f32, 0.5)}, 2);
|
||||
pixel_coord = LLVMBuildFAdd(ctx->ac.builder, pixel_coord, vec2_half, "");
|
||||
}
|
||||
|
||||
for (unsigned i = 0; i < 2; i++) {
|
||||
if (!args->ac.frag_pos[i].used)
|
||||
continue;
|
||||
|
||||
ret = insert_ret_of_arg(ctx, ret,
|
||||
LLVMBuildExtractElement(ctx->ac.builder, pixel_coord,
|
||||
LLVMConstInt(ctx->ac.i32, i, 0), ""),
|
||||
args->ac.frag_pos[i].arg_index);
|
||||
}
|
||||
}
|
||||
|
||||
/* Tell LLVM to insert WQM instruction sequence when needed. */
|
||||
if (key->ps_prolog.wqm) {
|
||||
LLVMAddTargetDependentFunctionAttr(func, "amdgpu-ps-wqm-outputs", "");
|
||||
|
|
|
|||
|
|
@ -580,12 +580,6 @@ void si_set_spi_ps_input_config_for_separate_prolog(struct si_shader *shader)
|
|||
/* The sample mask fixup has an optimization that replaces the sample mask with the sample ID. */
|
||||
if (key->ps.part.prolog.samplemask_log_ps_iter == 3)
|
||||
shader->config.spi_ps_input_ena &= C_0286CC_SAMPLE_COVERAGE_ENA;
|
||||
|
||||
if (key->ps.part.prolog.get_frag_coord_from_pixel_coord) {
|
||||
shader->config.spi_ps_input_ena &= C_0286CC_POS_X_FLOAT_ENA;
|
||||
shader->config.spi_ps_input_ena &= C_0286CC_POS_Y_FLOAT_ENA;
|
||||
shader->config.spi_ps_input_ena |= S_0286CC_POS_FIXED_PT_ENA(1);
|
||||
}
|
||||
}
|
||||
|
||||
void si_fixup_spi_ps_input_config(struct si_shader *shader)
|
||||
|
|
|
|||
|
|
@ -2424,8 +2424,6 @@ void si_ps_key_update_framebuffer_rasterizer_sample_shading(struct si_context *s
|
|||
uses_persp_center && uses_persp_centroid;
|
||||
key->ps.part.prolog.bc_optimize_for_linear =
|
||||
sel->info.uses_sysval_linear_center && sel->info.uses_sysval_linear_centroid;
|
||||
key->ps.part.prolog.get_frag_coord_from_pixel_coord =
|
||||
!sel->info.base.fs.uses_sample_shading && sel->info.reads_frag_coord_mask & 0x3;
|
||||
key->ps.part.prolog.force_samplemask_to_helper_invocation = 0;
|
||||
key->ps.mono.force_mono = 0;
|
||||
key->ps.mono.interpolate_at_sample_force_center = 0;
|
||||
|
|
@ -2444,8 +2442,6 @@ void si_ps_key_update_framebuffer_rasterizer_sample_shading(struct si_context *s
|
|||
sel->info.uses_sysval_linear_sample > 1;
|
||||
key->ps.part.prolog.bc_optimize_for_persp = 0;
|
||||
key->ps.part.prolog.bc_optimize_for_linear = 0;
|
||||
key->ps.part.prolog.get_frag_coord_from_pixel_coord =
|
||||
!!(sel->info.reads_frag_coord_mask & 0x3);
|
||||
key->ps.part.prolog.force_samplemask_to_helper_invocation = sel->info.uses_sysval_sample_mask_in;
|
||||
key->ps.mono.force_mono = 0;
|
||||
key->ps.mono.interpolate_at_sample_force_center = sel->info.uses_interp_at_sample;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue