summaryrefslogtreecommitdiff
path: root/prelude
diff options
context:
space:
mode:
Diffstat (limited to 'prelude')
-rw-r--r--prelude/slang-cpp-types.h15
-rw-r--r--prelude/slang-cuda-prelude.h10
2 files changed, 25 insertions, 0 deletions
diff --git a/prelude/slang-cpp-types.h b/prelude/slang-cpp-types.h
index f62333f68..563b4b6e9 100644
--- a/prelude/slang-cpp-types.h
+++ b/prelude/slang-cpp-types.h
@@ -343,6 +343,21 @@ struct TextureCubeArray
ITextureCubeArray* texture;
};
+/* !!!!!!!!!!!!!!!!!!!!!!!!!!! RWTexture !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
+
+struct IRWTexture1D
+{
+ virtual void Load(int32_t loc, void* out) = 0;
+};
+
+template <typename T>
+struct RWTexture1D
+{
+ T Load(int32_t loc) const { T out; texture->Load(loc, &out); return out; }
+
+ IRWTexture1D* texture;
+};
+
/* Varying input for Compute */
/* Used when running a single thread */
diff --git a/prelude/slang-cuda-prelude.h b/prelude/slang-cuda-prelude.h
index b81acba1e..1938e3dc1 100644
--- a/prelude/slang-cuda-prelude.h
+++ b/prelude/slang-cuda-prelude.h
@@ -40,6 +40,16 @@
# define SLANG_CUDA_FIXED_ARRAY_BOUND_CHECK(index, count) SLANG_PRELUDE_ASSERT(index < count);
#endif
+ // This macro handles how out-of-range surface coordinates are handled;
+ // I can equal
+ // cudaBoundaryModeClamp, in which case out-of-range coordinates are clamped to the valid range
+ // cudaBoundaryModeZero, in which case out-of-range reads return zero and out-of-range writes are ignored
+ // cudaBoundaryModeTrap, in which case out-of-range accesses cause the kernel execution to fail.
+
+#ifndef SLANG_CUDA_BOUNDARY_MODE
+# define SLANG_CUDA_BOUNDARY_MODE cudaBoundaryModeZero
+#endif
+
template <typename T, size_t SIZE>
struct FixedArray
{