anv: implement EDS2.extendedDynamicState2PatchControlPoints

We make the compiler assume the worst possible case (it's not great
because we have to burn 32 GRFs of potential input data) and then we
push the actual value through push constants.

This enables VK_EXT_gpl usage on zink, which causes two traces to change
their results.  Raven is an imperceptible change, blender has missing
original pngs but looks plausible.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22378>
This commit is contained in:
Lionel Landwerlin
2023-04-08 23:21:29 +03:00
committed by Marge Bot
parent 429ef02f83
commit e9fa840eed
16 changed files with 240 additions and 45 deletions
+6 -2
View File
@@ -457,10 +457,14 @@ void anv_CmdBindPipeline(
}
if ((gfx_pipeline->fs_msaa_flags & BRW_WM_MSAA_FLAG_ENABLE_DYNAMIC) &&
push->fs.msaa_flags != gfx_pipeline->fs_msaa_flags) {
push->fs.msaa_flags = gfx_pipeline->fs_msaa_flags;
push->gfx.fs_msaa_flags != gfx_pipeline->fs_msaa_flags) {
push->gfx.fs_msaa_flags = gfx_pipeline->fs_msaa_flags;
cmd_buffer->state.push_constants_dirty |= VK_SHADER_STAGE_FRAGMENT_BIT;
}
if (gfx_pipeline->dynamic_patch_control_points) {
cmd_buffer->state.push_constants_dirty |=
VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT;
}
break;
}