HLSL 资源类型

简介

HLSL 资源是运行时绑定的数据,作为 HLSL 编写着色器程序的输入、输出或两者兼有提供。HLSL 中的资源类型提供了读取和写入资源数据的关键用户抽象。

实现细节

在 Clang 中,资源类型由 HLSLExternalSemaSource 在初始化时前向声明。然后,当 requiresCompleteType 稍后在 Sema 中被调用时,它们会延迟完成。

资源类型是具有“无形”资源句柄类型 __hlsl_resource_t 作为成员的类。这些通常是指定可以从资源加载或存储到资源的数据类型的模板类声明。句柄用描述资源属性的 hlsl 特定属性进行注释。资源类型的成员函数通常只是围绕在句柄成员上操作的内置函数的简单包装器。

在代码生成期间,资源类型被降低到 IR 中的目标扩展类型。这些类型是特定于目标的,并且在 DXIL 和 SPIR-V 生成之间有所不同,为目标提供必要的信息来为各自的目标运行时生成绑定元数据。