From 802c1afe9c6f31b92d4f6ee2ded7975156139094 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 18 Aug 2020 17:00:48 -0400 Subject: [PATCH] zink: handle nir_texop_texture_samples this is just a SpvOpImageQuerySamples Reviewed-by: Erik Faye-Lund Part-of: --- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 75b52db8a5d..78dd437edbe 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -2895,7 +2895,8 @@ emit_tex(struct ntv_context *ctx, nir_tex_instr *tex) tex->op == nir_texop_txf_ms || tex->op == nir_texop_txs || tex->op == nir_texop_lod || - tex->op == nir_texop_tg4); + tex->op == nir_texop_tg4 || + tex->op == nir_texop_texture_samples); assert(tex->texture_index == tex->sampler_index); SpvId coord = 0, proj = 0, bias = 0, lod = 0, dref = 0, dx = 0, dy = 0, @@ -3024,6 +3025,13 @@ emit_tex(struct ntv_context *ctx, nir_tex_instr *tex) store_dest(ctx, &tex->dest, result, tex->dest_type); return; } + if (tex->op == nir_texop_texture_samples) { + SpvId image = spirv_builder_emit_image(&ctx->builder, image_type, load); + SpvId result = spirv_builder_emit_unop(&ctx->builder, SpvOpImageQuerySamples, + dest_type, image); + store_dest(ctx, &tex->dest, result, tex->dest_type); + return; + } if (proj && coord_components > 0) { SpvId constituents[coord_components + 1];