From 14dbf51d7fdf2e1e601039f9fea8be9c28c58e1f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 1 Jun 2020 14:55:38 -0400 Subject: [PATCH] zink: add spirv builder util functions for emitting xfb decorations based on patches originally written by Dave Airlie Reviewed-by: Erik Faye-Lund Part-of: --- .../drivers/zink/nir_to_spirv/spirv_builder.c | 24 +++++++++++++++++++ .../drivers/zink/nir_to_spirv/spirv_builder.h | 12 ++++++++++ 2 files changed, 36 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 bc5d08091b1..4f4b790cddc 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c +++ b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c @@ -224,6 +224,30 @@ spirv_builder_emit_array_stride(struct spirv_builder *b, SpvId target, emit_decoration(b, target, SpvDecorationArrayStride, args, ARRAY_SIZE(args)); } +void +spirv_builder_emit_offset(struct spirv_builder *b, SpvId target, + uint32_t offset) +{ + uint32_t args[] = { offset }; + emit_decoration(b, target, SpvDecorationOffset, args, ARRAY_SIZE(args)); +} + +void +spirv_builder_emit_xfb_buffer(struct spirv_builder *b, SpvId target, + uint32_t buffer) +{ + uint32_t args[] = { buffer }; + emit_decoration(b, target, SpvDecorationXfbBuffer, args, ARRAY_SIZE(args)); +} + +void +spirv_builder_emit_xfb_stride(struct spirv_builder *b, SpvId target, + uint32_t stride) +{ + uint32_t args[] = { stride }; + emit_decoration(b, target, SpvDecorationXfbStride, args, ARRAY_SIZE(args)); +} + void spirv_builder_emit_index(struct spirv_builder *b, SpvId target, int index) { 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 9d29699127c..d13426a637a 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.h +++ b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.h @@ -108,6 +108,18 @@ void spirv_builder_emit_array_stride(struct spirv_builder *b, SpvId target, uint32_t stride); +void +spirv_builder_emit_offset(struct spirv_builder *b, SpvId target, + uint32_t offset); + +void +spirv_builder_emit_xfb_buffer(struct spirv_builder *b, SpvId target, + uint32_t buffer); + +void +spirv_builder_emit_xfb_stride(struct spirv_builder *b, SpvId target, + uint32_t stride); + void spirv_builder_emit_member_offset(struct spirv_builder *b, SpvId target, uint32_t member, uint32_t offset); -- 2.30.2