From 3419b16b6d5e0048290fffa788fe8b66c3c68419 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 18 Mar 2021 09:49:13 -0400 Subject: [PATCH] zink: handle nir_intrinsic_image_deref_samples same as the texop but for images Reviewed-by: Jason Ekstrand Part-of: --- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 9 +++++++++ 1 file changed, 9 insertions(+) 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 245a8bf1d0c..91d775bb038 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 @@ -2772,6 +2772,15 @@ emit_intrinsic(struct ntv_context *ctx, nir_intrinsic_instr *intr) store_dest(ctx, &intr->dest, result, nir_type_uint); break; } + case nir_intrinsic_image_deref_samples: { + SpvId img_var = get_src(ctx, &intr->src[0]); + nir_variable *var = get_var_from_image(ctx, img_var); + SpvId img_type = ctx->image_types[var->data.driver_location]; + SpvId img = spirv_builder_emit_load(&ctx->builder, img_type, img_var); + SpvId result = spirv_builder_emit_unop(&ctx->builder, SpvOpImageQuerySamples, get_dest_type(ctx, &intr->dest, nir_type_uint), img); + store_dest(ctx, &intr->dest, result, nir_type_uint); + break; + } case nir_intrinsic_image_deref_atomic_add: case nir_intrinsic_image_deref_atomic_umin: case nir_intrinsic_image_deref_atomic_imin: