Mesa (master): nir: Add a vulkan_resource_reindex intrinsic

Jason Ekstrand jekstrand at kemper.freedesktop.org
Wed Dec 6 06:02:44 UTC 2017


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

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Thu Nov 30 15:56:39 2017 -0800

nir: Add a vulkan_resource_reindex intrinsic

This is required for being able to handle OpPtrAccessChain in SPIR-V
where the base type of the incoming pointer requires us to add to the
block index instead of the byte offset.

Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>

---

 src/compiler/nir/nir_intrinsics.h | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/compiler/nir/nir_intrinsics.h b/src/compiler/nir/nir_intrinsics.h
index 20bef339ac..ccf8e06336 100644
--- a/src/compiler/nir/nir_intrinsics.h
+++ b/src/compiler/nir/nir_intrinsics.h
@@ -210,7 +210,7 @@ INTRINSIC(image_samples, 0, ARR(0), true, 1, 1, 0, xx, xx, xx,
           NIR_INTRINSIC_CAN_ELIMINATE | NIR_INTRINSIC_CAN_REORDER)
 
 /*
- * Vulkan descriptor set intrinsic
+ * Vulkan descriptor set intrinsics
  *
  * The Vulkan API uses a different binding model from GL.  In the Vulkan
  * API, all external resources are represented by a tuple:
@@ -224,10 +224,17 @@ INTRINSIC(image_samples, 0, ARR(0), true, 1, 1, 0, xx, xx, xx,
  *
  * The intended usage is that the shader will call vulkan_surface_index to
  * get an index and then pass that as the buffer index ubo/ssbo calls.
+ *
+ * The vulkan_resource_reindex intrinsic takes a resource index in src0
+ * (the result of a vulkan_resource_index or vulkan_resource_reindex) which
+ * corresponds to the tuple (set, binding, index) and computes an index
+ * corresponding to tuple (set, binding, idx + src1).
  */
 INTRINSIC(vulkan_resource_index, 1, ARR(1), true, 1, 0, 2,
           DESC_SET, BINDING, xx,
           NIR_INTRINSIC_CAN_ELIMINATE | NIR_INTRINSIC_CAN_REORDER)
+INTRINSIC(vulkan_resource_reindex, 2, ARR(1, 1), true, 1, 0, 0, xx, xx, xx,
+          NIR_INTRINSIC_CAN_ELIMINATE | NIR_INTRINSIC_CAN_REORDER)
 
 /*
  * variable atomic intrinsics




More information about the mesa-commit mailing list