diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-12-18 20:30:12 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2024-04-06 20:11:55 +0000 |
commit | 5f757f3ff9144b609b3c433dfd370cc6bdc191ad (patch) | |
tree | 1b4e980b866cd26a00af34c0a653eb640bd09caf /contrib/llvm-project/clang/lib/CodeGen/CGHLSLRuntime.cpp | |
parent | 3e1c8a35f741a5d114d0ba670b15191355711fe9 (diff) | |
parent | 312c0ed19cc5276a17bacf2120097bec4515b0f1 (diff) |
Diffstat (limited to 'contrib/llvm-project/clang/lib/CodeGen/CGHLSLRuntime.cpp')
-rw-r--r-- | contrib/llvm-project/clang/lib/CodeGen/CGHLSLRuntime.cpp | 66 |
1 files changed, 8 insertions, 58 deletions
diff --git a/contrib/llvm-project/clang/lib/CodeGen/CGHLSLRuntime.cpp b/contrib/llvm-project/clang/lib/CodeGen/CGHLSLRuntime.cpp index e9fa273f21cc..3e8a40e7540b 100644 --- a/contrib/llvm-project/clang/lib/CodeGen/CGHLSLRuntime.cpp +++ b/contrib/llvm-project/clang/lib/CodeGen/CGHLSLRuntime.cpp @@ -184,7 +184,8 @@ void CGHLSLRuntime::finishCodeGen() { : llvm::hlsl::ResourceKind::TBuffer; std::string TyName = Buf.Name.str() + (Buf.IsCBuffer ? ".cb." : ".tb.") + "ty"; - addBufferResourceAnnotation(GV, TyName, RC, RK, Buf.Binding); + addBufferResourceAnnotation(GV, TyName, RC, RK, /*IsROV=*/false, + Buf.Binding); } } @@ -196,6 +197,7 @@ void CGHLSLRuntime::addBufferResourceAnnotation(llvm::GlobalVariable *GV, llvm::StringRef TyName, llvm::hlsl::ResourceClass RC, llvm::hlsl::ResourceKind RK, + bool IsROV, BufferResBinding &Binding) { llvm::Module &M = CGM.getModule(); @@ -219,60 +221,10 @@ void CGHLSLRuntime::addBufferResourceAnnotation(llvm::GlobalVariable *GV, "ResourceMD must have been set by the switch above."); llvm::hlsl::FrontendResource Res( - GV, TyName, RK, Binding.Reg.value_or(UINT_MAX), Binding.Space); + GV, TyName, RK, IsROV, Binding.Reg.value_or(UINT_MAX), Binding.Space); ResourceMD->addOperand(Res.getMetadata()); } -static llvm::hlsl::ResourceKind -castResourceShapeToResourceKind(HLSLResourceAttr::ResourceKind RK) { - switch (RK) { - case HLSLResourceAttr::ResourceKind::Texture1D: - return llvm::hlsl::ResourceKind::Texture1D; - case HLSLResourceAttr::ResourceKind::Texture2D: - return llvm::hlsl::ResourceKind::Texture2D; - case HLSLResourceAttr::ResourceKind::Texture2DMS: - return llvm::hlsl::ResourceKind::Texture2DMS; - case HLSLResourceAttr::ResourceKind::Texture3D: - return llvm::hlsl::ResourceKind::Texture3D; - case HLSLResourceAttr::ResourceKind::TextureCube: - return llvm::hlsl::ResourceKind::TextureCube; - case HLSLResourceAttr::ResourceKind::Texture1DArray: - return llvm::hlsl::ResourceKind::Texture1DArray; - case HLSLResourceAttr::ResourceKind::Texture2DArray: - return llvm::hlsl::ResourceKind::Texture2DArray; - case HLSLResourceAttr::ResourceKind::Texture2DMSArray: - return llvm::hlsl::ResourceKind::Texture2DMSArray; - case HLSLResourceAttr::ResourceKind::TextureCubeArray: - return llvm::hlsl::ResourceKind::TextureCubeArray; - case HLSLResourceAttr::ResourceKind::TypedBuffer: - return llvm::hlsl::ResourceKind::TypedBuffer; - case HLSLResourceAttr::ResourceKind::RawBuffer: - return llvm::hlsl::ResourceKind::RawBuffer; - case HLSLResourceAttr::ResourceKind::StructuredBuffer: - return llvm::hlsl::ResourceKind::StructuredBuffer; - case HLSLResourceAttr::ResourceKind::CBufferKind: - return llvm::hlsl::ResourceKind::CBuffer; - case HLSLResourceAttr::ResourceKind::SamplerKind: - return llvm::hlsl::ResourceKind::Sampler; - case HLSLResourceAttr::ResourceKind::TBuffer: - return llvm::hlsl::ResourceKind::TBuffer; - case HLSLResourceAttr::ResourceKind::RTAccelerationStructure: - return llvm::hlsl::ResourceKind::RTAccelerationStructure; - case HLSLResourceAttr::ResourceKind::FeedbackTexture2D: - return llvm::hlsl::ResourceKind::FeedbackTexture2D; - case HLSLResourceAttr::ResourceKind::FeedbackTexture2DArray: - return llvm::hlsl::ResourceKind::FeedbackTexture2DArray; - } - // Make sure to update HLSLResourceAttr::ResourceKind when add new Kind to - // hlsl::ResourceKind. Assume FeedbackTexture2DArray is the last enum for - // HLSLResourceAttr::ResourceKind. - static_assert( - static_cast<uint32_t>( - HLSLResourceAttr::ResourceKind::FeedbackTexture2DArray) == - (static_cast<uint32_t>(llvm::hlsl::ResourceKind::NumEntries) - 2)); - llvm_unreachable("all switch cases should be covered"); -} - void CGHLSLRuntime::annotateHLSLResource(const VarDecl *D, GlobalVariable *GV) { const Type *Ty = D->getType()->getPointeeOrArrayElementType(); if (!Ty) @@ -284,15 +236,13 @@ void CGHLSLRuntime::annotateHLSLResource(const VarDecl *D, GlobalVariable *GV) { if (!Attr) return; - HLSLResourceAttr::ResourceClass RC = Attr->getResourceType(); - llvm::hlsl::ResourceKind RK = - castResourceShapeToResourceKind(Attr->getResourceShape()); + llvm::hlsl::ResourceClass RC = Attr->getResourceClass(); + llvm::hlsl::ResourceKind RK = Attr->getResourceKind(); + bool IsROV = Attr->getIsROV(); QualType QT(Ty, 0); BufferResBinding Binding(D->getAttr<HLSLResourceBindingAttr>()); - addBufferResourceAnnotation(GV, QT.getAsString(), - static_cast<llvm::hlsl::ResourceClass>(RC), RK, - Binding); + addBufferResourceAnnotation(GV, QT.getAsString(), RC, RK, IsROV, Binding); } CGHLSLRuntime::BufferResBinding::BufferResBinding( |