hasvk/pipeline: Use feedback loop flags for self-dependencies

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22191>
This commit is contained in:
Faith Ekstrand
2023-03-29 10:02:15 -05:00
committed by Marge Bot
parent 8df8a3c19b
commit 6d4e605378
2 changed files with 10 additions and 8 deletions
-2
View File
@@ -38,8 +38,6 @@
struct intel_sample_positions;
typedef struct VkRenderingSelfDependencyInfoMESA VkRenderingSelfDependencyInfoMESA;
extern const uint32_t genX(vk_to_intel_cullmode)[];
extern const uint32_t genX(vk_to_intel_front_face)[];
+10 -6
View File
@@ -1530,6 +1530,13 @@ emit_3dstate_gs(struct anv_graphics_pipeline *pipeline)
}
}
static bool
rp_has_ds_self_dep(const struct vk_render_pass_state *rp)
{
return rp->pipeline_flags &
VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT;
}
static void
emit_3dstate_wm(struct anv_graphics_pipeline *pipeline,
const struct vk_input_assembly_state *ia,
@@ -1595,8 +1602,7 @@ emit_3dstate_wm(struct anv_graphics_pipeline *pipeline,
* may get the depth or stencil value from the current draw rather
* than the previous one.
*/
wm.PixelShaderKillsPixel = rp->depth_self_dependency ||
rp->stencil_self_dependency ||
wm.PixelShaderKillsPixel = rp_has_ds_self_dep(rp) ||
wm_prog_data->uses_kill ||
wm_prog_data->uses_omask;
@@ -1753,8 +1759,7 @@ emit_3dstate_ps_extra(struct anv_graphics_pipeline *pipeline,
* around to fetching from the input attachment and we may get the depth
* or stencil value from the current draw rather than the previous one.
*/
ps.PixelShaderKillsPixel = rp->depth_self_dependency ||
rp->stencil_self_dependency ||
ps.PixelShaderKillsPixel = rp_has_ds_self_dep(rp) ||
wm_prog_data->uses_kill;
ps.PixelShaderUsesInputCoverageMask = wm_prog_data->uses_sample_mask;
@@ -1797,8 +1802,7 @@ compute_kill_pixel(struct anv_graphics_pipeline *pipeline,
* of an alpha test.
*/
pipeline->kill_pixel =
rp->depth_self_dependency ||
rp->stencil_self_dependency ||
rp_has_ds_self_dep(rp) ||
wm_prog_data->uses_kill ||
wm_prog_data->uses_omask ||
(ms && ms->alpha_to_coverage_enable);