From 6ef8470bb429c1c6d3ee87cccb68754e7aa572c2 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 18 Oct 2022 11:36:10 -0400 Subject: [PATCH] zink: add some spirv builder handling for sampled image ops Part-of: --- .../drivers/zink/nir_to_spirv/spirv_builder.c | 13 +++++++++++++ .../drivers/zink/nir_to_spirv/spirv_builder.h | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c index cd9cae6d679..0e74decceb9 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c +++ b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c @@ -1329,6 +1329,12 @@ spirv_builder_type_image(struct spirv_builder *b, SpvId sampled_type, return get_type_def(b, SpvOpTypeImage, args, ARRAY_SIZE(args)); } +SpvId +spirv_builder_emit_sampled_image(struct spirv_builder *b, SpvId result_type, SpvId image, SpvId sampler) +{ + return spirv_builder_emit_binop(b, SpvOpSampledImage, result_type, image, sampler); +} + SpvId spirv_builder_type_sampled_image(struct spirv_builder *b, SpvId image_type) { @@ -1336,6 +1342,13 @@ spirv_builder_type_sampled_image(struct spirv_builder *b, SpvId image_type) return get_type_def(b, SpvOpTypeSampledImage, args, ARRAY_SIZE(args)); } +SpvId +spirv_builder_type_sampler(struct spirv_builder *b) +{ + uint32_t args[1] = {0}; + return get_type_def(b, SpvOpTypeSampler, args, 0); +} + SpvId spirv_builder_type_pointer(struct spirv_builder *b, SpvStorageClass storage_class, SpvId type) diff --git a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.h b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.h index db7c64f17d0..10eed69a80a 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.h +++ b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.h @@ -394,6 +394,10 @@ spirv_builder_type_image(struct spirv_builder *b, SpvId sampled_type, SpvId spirv_builder_type_sampled_image(struct spirv_builder *b, SpvId image_type); +SpvId +spirv_builder_type_sampler(struct spirv_builder *b); +SpvId +spirv_builder_emit_sampled_image(struct spirv_builder *b, SpvId result_type, SpvId image, SpvId sampler); SpvId spirv_builder_type_pointer(struct spirv_builder *b,