From: Dave Airlie Date: Mon, 24 Oct 2016 21:47:13 +0000 (+1000) Subject: radv/ac/llvm: shadow samplers only return one value. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b56b54cbf1d8e70c87a434da5350d11533e5fed8;p=mesa.git 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 --- diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 76d6d887885..21089024e00 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 &&