zink: fixup subgroup vote/ballot enables.

These are part of vulkan 1.1, but the ext are if you don't have 1.1.

This will enable some tests that break in CI

Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17588>
This commit is contained in:
Dave Airlie 2022-07-18 14:15:41 +10:00 committed by Marge Bot
parent 8be15cc382
commit 9bbc3c4e85
2 changed files with 15 additions and 5 deletions

View File

@ -86,6 +86,7 @@ EXTENSIONS = [
Extension("VK_EXT_post_depth_coverage"),
Extension("VK_EXT_depth_clip_control", alias="clip_control", features=True),
Extension("VK_EXT_shader_subgroup_ballot"),
Extension("VK_EXT_shader_subgroup_vote"),
Extension("VK_EXT_shader_atomic_float", alias="atomic_float", features=True),
Extension("VK_KHR_8bit_storage",
alias="storage_8bit",

View File

@ -448,10 +448,13 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return screen->info.feats11.shaderDrawParameters || screen->info.have_KHR_shader_draw_parameters;
case PIPE_CAP_SHADER_GROUP_VOTE:
return screen->info.have_vulkan11 &&
if (screen->info.have_vulkan11 &&
(screen->info.subgroup.supportedOperations & VK_SUBGROUP_FEATURE_VOTE_BIT) &&
(screen->info.subgroup.supportedStages & VK_SHADER_STAGE_COMPUTE_BIT);
(screen->info.subgroup.supportedStages & VK_SHADER_STAGE_COMPUTE_BIT))
return true;
if (screen->info.have_EXT_shader_subgroup_vote)
return true;
return false;
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
return screen->info.have_EXT_provoking_vertex;
@ -518,8 +521,14 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return 1;
case PIPE_CAP_SHADER_BALLOT:
return screen->info.have_vulkan12 && screen->info.have_EXT_shader_subgroup_ballot && screen->info.props11.subgroupSize <= 64;
if (screen->info.props11.subgroupSize > 64)
return false;
if (screen->info.have_vulkan11 &&
screen->info.subgroup.supportedOperations & VK_SUBGROUP_FEATURE_BALLOT_BIT)
return true;
if (screen->info.have_EXT_shader_subgroup_ballot)
return true;
return false;
case PIPE_CAP_SAMPLE_SHADING:
return screen->info.feats.features.sampleRateShading;