From: Mike Blumenkrantz Date: Mon, 1 Jun 2020 18:55:38 +0000 (-0400) Subject: zink: add spirv builder util functions for emitting xfb decorations X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=14dbf51d7fdf2e1e601039f9fea8be9c28c58e1f;p=mesa.git 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: --- 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);