zink: relax tessellation shader reqs

vk memory model isn't actually required for tcs io semantics due
to how control barriers are emitted in GL

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9232>
This commit is contained in:
Mike Blumenkrantz 2021-02-23 14:20:10 -05:00
parent 4aac98f8a6
commit 190b4ad18e
2 changed files with 3 additions and 4 deletions

View file

@ -3648,8 +3648,8 @@ nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info,
ctx.GLSL_std_450 = spirv_builder_import(&ctx.builder, "GLSL.std.450");
spirv_builder_emit_source(&ctx.builder, SpvSourceLanguageUnknown, 0);
if (s->info.stage == MESA_SHADER_TESS_CTRL || s->info.num_images) {
/* this is required for correct barrier and io semantics */
if (s->info.num_images) {
/* this is required for correct io semantics */
spirv_builder_emit_extension(&ctx.builder, "SPV_KHR_vulkan_memory_model");
spirv_builder_emit_cap(&ctx.builder, SpvCapabilityVulkanMemoryModel);
spirv_builder_emit_cap(&ctx.builder, SpvCapabilityVulkanMemoryModelDeviceScope);

View file

@ -535,8 +535,7 @@ zink_get_shader_param(struct pipe_screen *pscreen,
return INT_MAX;
case PIPE_SHADER_TESS_CTRL:
case PIPE_SHADER_TESS_EVAL:
if (screen->info.have_KHR_vulkan_memory_model &&
screen->info.feats.features.tessellationShader &&
if (screen->info.feats.features.tessellationShader &&
screen->info.have_KHR_maintenance2)
return INT_MAX;
break;