From 6aeb93d5551947720c896a1a79d1cb330d05ebde Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Mon, 25 Jul 2022 14:46:47 +0200 Subject: [PATCH] zink: more accurately set {Sampled,Image}1D caps We don't really need to set this for every shader that uses textures, only the ones that use 1D textures. Reviewed-by: Mike Blumenkrantz Part-of: --- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 4e1203d..bf1eda42 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -871,6 +871,13 @@ get_bare_image_type(struct ntv_context *ctx, struct nir_variable *var, bool is_s } SpvDim dimension = type_to_dim(glsl_get_sampler_dim(type), &is_ms); + if (dimension == SpvDim1D) { + if (is_sampler) + spirv_builder_emit_cap(&ctx->builder, SpvCapabilitySampled1D); + else + spirv_builder_emit_cap(&ctx->builder, SpvCapabilityImage1D); + } + bool arrayed = glsl_sampler_type_is_array(type); if (dimension == SpvDimCube && arrayed) spirv_builder_emit_cap(&ctx->builder, SpvCapabilityImageCubeArray); @@ -4180,15 +4187,11 @@ nir_to_spirv(struct nir_shader *s, const struct zink_shader_info *sinfo, uint32_ spirv_builder_emit_cap(&ctx.builder, SpvCapabilityMultiViewport); } - if (s->info.num_textures) { - spirv_builder_emit_cap(&ctx.builder, SpvCapabilitySampled1D); + if (s->info.num_textures) spirv_builder_emit_cap(&ctx.builder, SpvCapabilityImageQuery); - } - if (s->info.num_images) { - spirv_builder_emit_cap(&ctx.builder, SpvCapabilityImage1D); + if (s->info.num_images) spirv_builder_emit_cap(&ctx.builder, SpvCapabilityImageQuery); - } ctx.stage = s->info.stage; ctx.sinfo = sinfo; -- 2.7.4