summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-04-30 16:38:57 -0700
committerGitHub <noreply@github.com>2025-04-30 16:38:57 -0700
commita8d7bb9f781fd77080f07bfaab54fbbcf3a3686d (patch)
tree3bda97cf2a0d9a7800e7201e948354962e13d2a4 /source
parent7f1df9d0b31413e59846cc955d2a955d3f361e2a (diff)
Add `IOpaqueDescriptor::descriptorAccess`. (#6967)
* Add `IOpaqueHandle::descriptorAccess`. * Update doc. * fix.
Diffstat (limited to 'source')
-rw-r--r--source/slang/hlsl.meta.slang43
1 files changed, 29 insertions, 14 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index a6e1196e3..3d83e33c1 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -21966,6 +21966,16 @@ enum DescriptorKind
AccelerationStructure, /// A ray tracing acceleration structure descriptor.
}
+enum DescriptorAccess
+{
+ Unknown = -1,
+ Read = $(kCoreModule_ResourceAccessReadOnly),
+ Write = $(kCoreModule_ResourceAccessWriteOnly),
+ ReadWrite = $(kCoreModule_ResourceAccessReadWrite),
+ RasterizerOrdered = $(kCoreModule_ResourceAccessRasterizerOrdered),
+ Feedback = $(kCoreModule_ResourceAccessFeedback),
+}
+
/// Represents an opaque descriptor type, such as textures, samplers, and buffers etc,
/// whose size may be undefined and can't be directly accessed as ordinary data.
[sealed]
@@ -21974,6 +21984,7 @@ interface IOpaqueDescriptor
{
/// The kind of the descriptor.
static const DescriptorKind kind;
+ static const DescriptorAccess descriptorAccess;
}
__magic_type(DynamicResourceType)
@@ -22005,7 +22016,8 @@ extension _Texture<T, Shape, isArray, isMS, sampleCount, access, isShadow, isCom
typealias Handle = DescriptorHandle<This>;
- static const DescriptorKind kind = isCombined!=0 ? DescriptorKind.CombinedTextureSampler : DescriptorKind.Texture;
+ static const DescriptorKind kind = isCombined != 0 ? DescriptorKind.CombinedTextureSampler : DescriptorKind.Texture;
+ static const DescriptorAccess descriptorAccess = (DescriptorAccess)access;
__implicit_conversion($(kConversionCost_ImplicitDereference))
[ForceInline]
@@ -22021,28 +22033,30 @@ struct DynamicResourceTypeInfo
const char* name;
const char* kind;
const char* dynamicKind;
+ const char* access;
};
const DynamicResourceTypeInfo kDynamicResourceCastableTypes[] = {
- {"StructuredBuffer<T, L>", "Buffer", "General"},
- {"RWStructuredBuffer<T, L>", "Buffer", "General"},
- {"AppendStructuredBuffer<T, L>", "Buffer", "General"},
- {"ConsumeStructuredBuffer<T, L>", "Buffer", "General"},
- {"RasterizerOrderedStructuredBuffer<T, L>", "Buffer", "General"},
- {"ByteAddressBuffer", "Buffer", "General"},
- {"RWByteAddressBuffer", "Buffer", "General"},
- {"RasterizerOrderedByteAddressBuffer", "Buffer", "General"},
- {"SamplerState", "Sampler", "Sampler"},
- {"SamplerComparisonState", "Sampler", "Sampler"},
- {"ConstantBuffer<T, L>", "Buffer", "General"},
- {"TextureBuffer<T>", "Buffer", "General"},
- {"RaytracingAccelerationStructure", "AccelerationStructure", "General"},
+ { "StructuredBuffer<T, L>", "Buffer", "General", "Read" },
+ { "RWStructuredBuffer<T, L>", "Buffer", "General", "ReadWrite" },
+ { "AppendStructuredBuffer<T, L>", "Buffer", "General", "ReadWrite" },
+ { "ConsumeStructuredBuffer<T, L>", "Buffer", "General", "ReadWrite" },
+ { "RasterizerOrderedStructuredBuffer<T, L>", "Buffer", "General", "ReadWrite" },
+ { "ByteAddressBuffer", "Buffer", "General", "Read" },
+ { "RWByteAddressBuffer", "Buffer", "General", "ReadWrite" },
+ { "RasterizerOrderedByteAddressBuffer", "Buffer", "General", "ReadWrite" },
+ { "SamplerState", "Sampler", "Sampler", "Unknown" },
+ { "SamplerComparisonState", "Sampler", "Sampler", "Unknown" },
+ { "ConstantBuffer<T, L>", "Buffer", "General", "Read"},
+ { "TextureBuffer<T>", "Buffer", "General", "Read"},
+ { "RaytracingAccelerationStructure", "AccelerationStructure", "General", "Read"},
};
for (auto type : kDynamicResourceCastableTypes) {
auto dynamicKind = type.dynamicKind;
auto kind = type.kind;
auto typeName = type.name;
+ auto access = type.access;
if (strstr(typeName, "<T, L>"))
sb << "__generic<T, L : IBufferDataLayout>\n";
else if (strstr(typeName, "<T>"))
@@ -22056,6 +22070,7 @@ extension $(typeName) : __IDynamicResourceCastable<__DynamicResourceKind.$(dynam
__init(__DynamicResource res);
static const DescriptorKind kind = DescriptorKind.$(kind);
+ static const DescriptorAccess descriptorAccess = DescriptorAccess.$(access);
typealias Handle = DescriptorHandle<$(typeName)>;