From a8d7bb9f781fd77080f07bfaab54fbbcf3a3686d Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 30 Apr 2025 16:38:57 -0700 Subject: Add `IOpaqueDescriptor::descriptorAccess`. (#6967) * Add `IOpaqueHandle::descriptorAccess`. * Update doc. * fix. --- source/slang/hlsl.meta.slang | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) (limited to 'source') 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; - 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", "Buffer", "General"}, - {"RWStructuredBuffer", "Buffer", "General"}, - {"AppendStructuredBuffer", "Buffer", "General"}, - {"ConsumeStructuredBuffer", "Buffer", "General"}, - {"RasterizerOrderedStructuredBuffer", "Buffer", "General"}, - {"ByteAddressBuffer", "Buffer", "General"}, - {"RWByteAddressBuffer", "Buffer", "General"}, - {"RasterizerOrderedByteAddressBuffer", "Buffer", "General"}, - {"SamplerState", "Sampler", "Sampler"}, - {"SamplerComparisonState", "Sampler", "Sampler"}, - {"ConstantBuffer", "Buffer", "General"}, - {"TextureBuffer", "Buffer", "General"}, - {"RaytracingAccelerationStructure", "AccelerationStructure", "General"}, + { "StructuredBuffer", "Buffer", "General", "Read" }, + { "RWStructuredBuffer", "Buffer", "General", "ReadWrite" }, + { "AppendStructuredBuffer", "Buffer", "General", "ReadWrite" }, + { "ConsumeStructuredBuffer", "Buffer", "General", "ReadWrite" }, + { "RasterizerOrderedStructuredBuffer", "Buffer", "General", "ReadWrite" }, + { "ByteAddressBuffer", "Buffer", "General", "Read" }, + { "RWByteAddressBuffer", "Buffer", "General", "ReadWrite" }, + { "RasterizerOrderedByteAddressBuffer", "Buffer", "General", "ReadWrite" }, + { "SamplerState", "Sampler", "Sampler", "Unknown" }, + { "SamplerComparisonState", "Sampler", "Sampler", "Unknown" }, + { "ConstantBuffer", "Buffer", "General", "Read"}, + { "TextureBuffer", "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, "")) sb << "__generic\n"; else if (strstr(typeName, "")) @@ -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)>; -- cgit v1.2.3