diff options
Diffstat (limited to 'prelude')
| -rw-r--r-- | prelude/slang-cpp-types.h | 15 | ||||
| -rw-r--r-- | prelude/slang-cuda-prelude.h | 10 |
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 { |
