From b56b54cbf1d8e70c87a434da5350d11533e5fed8 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 25 Oct 2016 07:47:13 +1000 Subject: [PATCH] radv/ac/llvm: shadow samplers only return one value. The intrinsic engine asserts in llvm due to this. Reported-by: Christoph Haag Cc: "13.0" Signed-off-by: Dave Airlie --- src/amd/common/ac_nir_to_llvm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 76d6d887..2108902 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -3627,7 +3627,9 @@ static void visit_tex(struct nir_to_llvm_context *ctx, nir_tex_instr *instr) result = build_tex_intrinsic(ctx, instr, &tinfo); - if (instr->op == nir_texop_query_levels) + if (instr->is_shadow) + result = LLVMBuildExtractElement(ctx->builder, result, ctx->i32zero, ""); + else if (instr->op == nir_texop_query_levels) result = LLVMBuildExtractElement(ctx->builder, result, LLVMConstInt(ctx->i32, 3, false), ""); else if (instr->op == nir_texop_txs && instr->sampler_dim == GLSL_SAMPLER_DIM_CUBE && -- 2.7.4