mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
radv: set DB_SHADER_CONTROL.CONSERVATIVE_Z_EXPORT correctly
Use the SPIR-V execution modes if set. Cc: 20.1 <mesa-stable@lists.freedesktop.org> Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5404>
This commit is contained in:
parent
900bf50c39
commit
07aefe8065
3 changed files with 9 additions and 0 deletions
|
|
@ -4492,12 +4492,18 @@ radv_compute_db_shader_control(const struct radv_device *device,
|
|||
const struct radv_pipeline *pipeline,
|
||||
const struct radv_shader_variant *ps)
|
||||
{
|
||||
unsigned conservative_z_export = V_02880C_EXPORT_ANY_Z;
|
||||
unsigned z_order;
|
||||
if (ps->info.ps.early_fragment_test || !ps->info.ps.writes_memory)
|
||||
z_order = V_02880C_EARLY_Z_THEN_LATE_Z;
|
||||
else
|
||||
z_order = V_02880C_LATE_Z;
|
||||
|
||||
if (ps->info.ps.depth_layout == FRAG_DEPTH_LAYOUT_GREATER)
|
||||
conservative_z_export = V_02880C_EXPORT_GREATER_THAN_Z;
|
||||
else if (ps->info.ps.depth_layout == FRAG_DEPTH_LAYOUT_LESS)
|
||||
conservative_z_export = V_02880C_EXPORT_LESS_THAN_Z;
|
||||
|
||||
bool disable_rbplus = device->physical_device->rad_info.has_rbplus &&
|
||||
!device->physical_device->rad_info.rbplus_allowed;
|
||||
|
||||
|
|
@ -4511,6 +4517,7 @@ radv_compute_db_shader_control(const struct radv_device *device,
|
|||
S_02880C_STENCIL_TEST_VAL_EXPORT_ENABLE(ps->info.ps.writes_stencil) |
|
||||
S_02880C_KILL_ENABLE(!!ps->info.ps.can_discard) |
|
||||
S_02880C_MASK_EXPORT_ENABLE(mask_export_enable) |
|
||||
S_02880C_CONSERVATIVE_Z_EXPORT(conservative_z_export) |
|
||||
S_02880C_Z_ORDER(z_order) |
|
||||
S_02880C_DEPTH_BEFORE_SHADER(ps->info.ps.early_fragment_test) |
|
||||
S_02880C_PRE_SHADER_DEPTH_COVERAGE_ENABLE(ps->info.ps.post_depth_coverage) |
|
||||
|
|
|
|||
|
|
@ -312,6 +312,7 @@ struct radv_shader_info {
|
|||
bool can_discard;
|
||||
bool early_fragment_test;
|
||||
bool post_depth_coverage;
|
||||
uint8_t depth_layout;
|
||||
} ps;
|
||||
struct {
|
||||
bool uses_grid_size;
|
||||
|
|
|
|||
|
|
@ -763,6 +763,7 @@ radv_nir_shader_info_pass(const struct nir_shader *nir,
|
|||
info->ps.can_discard = nir->info.fs.uses_discard;
|
||||
info->ps.early_fragment_test = nir->info.fs.early_fragment_tests;
|
||||
info->ps.post_depth_coverage = nir->info.fs.post_depth_coverage;
|
||||
info->ps.depth_layout = nir->info.fs.depth_layout;
|
||||
break;
|
||||
case MESA_SHADER_GEOMETRY:
|
||||
info->gs.vertices_in = nir->info.gs.vertices_in;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue