================ @@ -0,0 +1,799 @@ +====================== +DXIL Resource Handling +====================== + +.. contents:: + :local: + +.. toctree:: + :hidden: + +Introduction +============ + +Resources in DXIL are represented via ``TargetExtType`` in LLVM IR and +eventually lowered by the DirectX backend into metadata in DXIL. + +In DXC and DXIL, static resources are represented as lists of SRVs (Shader +Resource Views), UAVs (Uniform Access Views), CBVs (Constant Bffer Views), and +Samplers. This metadata consists of a "resource record ID" which uniquely +identifies a resource and type information. As of shader model 6.6, there are +also dynamic resources, which forgo the metadata and are described via +``annotateHandle`` operations in the instruction stream instead. + +In LLVM we attempt to unify some of the alternative representations that are +present in DXC, with the aim of making handling of resources in the middle end +of the compiler simpler and more consistent. + +Resource Type Information and Properties +======================================== + +There are a number of properties associated with a resource in DXIL. + +`Resource ID` + An arbitrary ID that must be unique per resource type (SRV, UAV, etc). + + In LLVM we don't bother representing this, instead opting to generate it at + DXIL lowering time. + +`Binding information` + Information about where the resource comes from. This is either (a) a + binding space, lower bound in that space, and size of the binding, or (b) an ---------------- bogner wrote:
It's the "space" in `register(t3, space0)`. From https://learn.microsoft.com/en-us/windows/win32/direct3d12/resource-binding-in-hlsl: > The space keyword specifies to which logical register space the declared > variable is bound. If the space keyword is omitted, then the default space > index of 0 is implicitly assigned to the range (so the tex2 range above > resides in space0). register(t3, space0) will never conflict with > register(t3, space1), nor with any array in another space that might include > t3. https://github.com/llvm/llvm-project/pull/90553 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits