@@ -20932,6 +20932,8 @@ struct ConstBufferPointer
20932
20932
// new aliased bindings for each distinct cast type.
20933
20933
//
20934
20934
20935
+ //@public:
20936
+
20935
20937
/// Represent the kind of a descriptor type.
20936
20938
enum DescriptorKind
20937
20939
{
@@ -21048,8 +21050,18 @@ ${{{{
21048
21050
}
21049
21051
}}}}
21050
21052
21051
- /// Represents a bindless resource handle. A bindless resource handle is always a concrete type and can be
21053
+ /// Represents a bindless handle to a descriptor . A descriptor handle is always an ordinary data type and can be
21052
21054
/// declared in any memory location.
21055
+ /// @remarks Opaque descriptor types such as textures(`Texture2D` etc.), `SamplerState` and buffers (e.g. `StructuredBuffer`)
21056
+ /// can have undefined size and data representation on many targets. On platforms such as Vulkan and D3D12, descriptors are
21057
+ /// communicated to the shader code by calling the host side API to write the descriptor into a descriptor set or table, instead
21058
+ /// of directly writing bytes into an ordinary GPU accessible buffer. As a result, oapque handle types cannot be used in places
21059
+ /// that refer to a ordinary buffer location, such as as element types of a `StructuredBuffer`.
21060
+ /// However, a `DescriptorHandle<T>` stores a handle (or address) to the actual descriptor, and is always an ordinary data type
21061
+ /// that can be manipulated directly in the shader code. This gives the developer the flexibility to embed and pass around descriptor
21062
+ /// parameters throughout the code, to enable cleaner modular designs.
21063
+ /// See [User Guide](https://shader-slang.com/slang/user-guide/convenience-features.html#descriptorhandle-for-bindless-descriptor-access)
21064
+ /// for more information on how to use `DescriptorHandle<T>` in your code.
21053
21065
__magic_type(DescriptorHandleType)
21054
21066
__intrinsic_type($(kIROp_DescriptorHandleType))
21055
21067
struct DescriptorHandle<T:IOpaqueDescriptor> : IComparable
@@ -21140,6 +21152,8 @@ extern T getDescriptorFromHandle<T:IOpaqueDescriptor>(DescriptorHandle<T> handle
21140
21152
__intrinsic_op($(kIROp_NonUniformResourceIndex))
21141
21153
DescriptorHandle<T> nonuniform<T:IOpaqueDescriptor>(DescriptorHandle<T> ptr);
21142
21154
21155
+ //@hidden:
21156
+
21143
21157
__glsl_version(450)
21144
21158
__glsl_extension(GL_ARB_shader_clock)
21145
21159
[require(glsl_spirv, GL_ARB_shader_clock)]
0 commit comments