ir3: Fix txs with bindless
authorConnor Abbott <cwabbott0@gmail.com>
Tue, 14 Apr 2020 09:35:50 +0000 (11:35 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 14 Apr 2020 16:25:34 +0000 (16:25 +0000)
I missed that this had a micro-optimization to assume that there was
only ever one source, which is no longer valid for the bindless model
since we now have a bindless handle source. Remove the optimization to
fix assertion failures with turnip.

Fixes e.g.
dEQP-VK.glsl.texture_functions.query.texturesize.sampler2d_fixed_vertex

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4548>

src/freedreno/ir3/ir3_compiler_nir.c

index 365870509b3dd87764c200c32401c9f7e957c7c0..307eded893afb858de646526d5611261419d907c 100644 (file)
@@ -2548,10 +2548,10 @@ emit_tex_txs(struct ir3_context *ctx, nir_tex_instr *tex)
 
        dst = ir3_get_dst(ctx, &tex->dest, 4);
 
-       compile_assert(ctx, tex->num_srcs == 1);
-       compile_assert(ctx, tex->src[0].src_type == nir_tex_src_lod);
+       int lod_idx = nir_tex_instr_src_index(tex, nir_tex_src_lod);
+       compile_assert(ctx, lod_idx >= 0);
 
-       lod = ir3_get_src(ctx, &tex->src[0].src)[0];
+       lod = ir3_get_src(ctx, &tex->src[lod_idx].src)[0];
 
        sam = emit_sam(ctx, OPC_GETSIZE, info, dst_type, 0b1111, lod, NULL);
        ir3_split_dest(b, dst, sam, 0, 4);