From d136a5fad9c7e67c1362453388914ecc60420883 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 23 Apr 2018 17:05:10 +0200 Subject: [PATCH] ac: fix the number of coordinates for ac_image_get_lod and arrays MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This fixes crashes for the following CTS: dEQP-VK.glsl.texture_functions.query.texturequerylod.* Cubemaps are the same as 2D arrays. Fixes: 625dcbbc456 ("amd/common: pass address components individually to ac_build_image_intrinsic") Cc: 18.1 Signed-off-by: Samuel Pitoiset Reviewed-by: Nicolai Hähnle --- src/amd/common/ac_llvm_build.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c index 02739f9da9c..f21a5d2623c 100644 --- a/src/amd/common/ac_llvm_build.c +++ b/src/amd/common/ac_llvm_build.c @@ -1521,6 +1521,20 @@ LLVMValueRef ac_build_image_opcode(struct ac_llvm_context *ctx, LLVMValueRef addr; unsigned num_addr = 0; + if (a->opcode == ac_image_get_lod) { + switch (a->dim) { + case ac_image_1darray: + num_coords = 1; + break; + case ac_image_2darray: + case ac_image_cube: + num_coords = 2; + break; + default: + break; + } + } + if (a->offset) args[num_addr++] = ac_to_integer(ctx, a->offset); if (a->bias) -- 2.30.2