mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 00:00:11 +01:00
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:
parent
e5976bebed
commit
c3c138b10f
3 changed files with 7 additions and 4 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue