radv: optimize msad_4x8 to mqsad_4x8
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Georg Lehmann <dadschoorse@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26251>
This commit is contained in:
@@ -681,7 +681,8 @@ radv_postprocess_nir(struct radv_device *device, const struct radv_graphics_stat
|
||||
&stage->args.ac);
|
||||
NIR_PASS_V(stage->nir, radv_nir_lower_abi, gfx_level, stage, gfx_state, pdev->info.address32_hi);
|
||||
radv_optimize_nir_algebraic(
|
||||
stage->nir, io_to_mem || lowered_ngg || stage->stage == MESA_SHADER_COMPUTE || stage->stage == MESA_SHADER_TASK);
|
||||
stage->nir, io_to_mem || lowered_ngg || stage->stage == MESA_SHADER_COMPUTE || stage->stage == MESA_SHADER_TASK,
|
||||
gfx_level >= GFX7);
|
||||
|
||||
NIR_PASS(_, stage->nir, nir_lower_fp16_casts, nir_lower_fp16_split_fp64);
|
||||
|
||||
|
||||
@@ -201,7 +201,7 @@ radv_optimize_nir(struct nir_shader *shader, bool optimize_conservatively)
|
||||
}
|
||||
|
||||
void
|
||||
radv_optimize_nir_algebraic(nir_shader *nir, bool opt_offsets)
|
||||
radv_optimize_nir_algebraic(nir_shader *nir, bool opt_offsets, bool opt_mqsad)
|
||||
{
|
||||
bool more_algebraic = true;
|
||||
while (more_algebraic) {
|
||||
@@ -222,6 +222,8 @@ radv_optimize_nir_algebraic(nir_shader *nir, bool opt_offsets)
|
||||
};
|
||||
NIR_PASS(_, nir, nir_opt_offsets, &offset_options);
|
||||
}
|
||||
if (opt_mqsad)
|
||||
NIR_PASS(_, nir, nir_opt_mqsad);
|
||||
|
||||
/* Do late algebraic optimization to turn add(a,
|
||||
* neg(b)) back into subs, then the mandatory cleanup
|
||||
@@ -848,7 +850,7 @@ radv_lower_ngg(struct radv_device *device, struct radv_shader_stage *ngg_stage,
|
||||
assert(info->is_ngg);
|
||||
|
||||
if (info->has_ngg_culling)
|
||||
radv_optimize_nir_algebraic(nir, false);
|
||||
radv_optimize_nir_algebraic(nir, false, false);
|
||||
|
||||
options.num_vertices_per_primitive = num_vertices_per_prim;
|
||||
options.early_prim_export = info->has_ngg_early_prim_export;
|
||||
|
||||
@@ -504,7 +504,7 @@ struct radv_pipeline_layout;
|
||||
struct radv_shader_stage;
|
||||
|
||||
void radv_optimize_nir(struct nir_shader *shader, bool optimize_conservatively);
|
||||
void radv_optimize_nir_algebraic(nir_shader *shader, bool opt_offsets);
|
||||
void radv_optimize_nir_algebraic(nir_shader *shader, bool opt_offsets, bool opt_mqsad);
|
||||
|
||||
void radv_nir_lower_rt_io(nir_shader *shader, bool monolithic, uint32_t payload_offset);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user