Mesa (master): zink: add spirv builder util functions for emitting xfb decorations

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 17 22:01:36 UTC 2020


Module: Mesa
Branch: master
Commit: 14dbf51d7fdf2e1e601039f9fea8be9c28c58e1f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=14dbf51d7fdf2e1e601039f9fea8be9c28c58e1f

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Mon Jun  1 14:55:38 2020 -0400

zink: add spirv builder util functions for emitting xfb decorations

based on patches originally written by Dave Airlie <airlied at redhat.com>

Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5163>

---

 .../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);



More information about the mesa-commit mailing list