From: Caio Marcelo de Oliveira Filho Date: Wed, 13 Nov 2019 19:04:39 +0000 (-0800) Subject: spirv: Consider the sampled_image case in wa_glslang_179 workaround X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7ae506e5b8073ec8791272cb84b83c79adf9d4e7;p=mesa.git spirv: Consider the sampled_image case in wa_glslang_179 workaround Fixes: 9e440b8d0b9 ("spirv: Sort out the mess that is sampled image") Reviewed-by: Jason Ekstrand --- diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c index 4a9e031a9f8..960bc01ef68 100644 --- a/src/compiler/spirv/vtn_variables.c +++ b/src/compiler/spirv/vtn_variables.c @@ -2609,8 +2609,13 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode, vtn_warn("OpStore of a sampler detected. Doing on-the-fly copy " "propagation to workaround the problem."); vtn_assert(dest->var->copy_prop_sampler == NULL); - dest->var->copy_prop_sampler = - vtn_value(b, w[2], vtn_value_type_pointer)->pointer; + struct vtn_value *v = vtn_untyped_value(b, w[2]); + if (v->value_type == vtn_value_type_sampled_image) { + dest->var->copy_prop_sampler = v->sampled_image->sampler; + } else { + vtn_assert(v->value_type == vtn_value_type_pointer); + dest->var->copy_prop_sampler = v->pointer; + } } else { vtn_fail("Vulkan does not allow OpStore of a sampler or image."); }