From 57957640a6f869622304285da6d25c71b8c3ae4d Mon Sep 17 00:00:00 2001 From: KungFuDonkey Date: Thu, 16 Oct 2025 18:07:54 +0200 Subject: [PATCH 1/2] Fix for incomplete buffer types --- clang/lib/Sema/HLSLExternalSemaSource.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/clang/lib/Sema/HLSLExternalSemaSource.cpp b/clang/lib/Sema/HLSLExternalSemaSource.cpp index e118dda4780e2..f7fb04b7b0f60 100644 --- a/clang/lib/Sema/HLSLExternalSemaSource.cpp +++ b/clang/lib/Sema/HLSLExternalSemaSource.cpp @@ -473,6 +473,8 @@ void HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() { /*RawBuffer=*/true, /*HasCounter=*/false) .completeDefinition(); }); + CompleteType(Decl); + Decl = BuiltinTypeDeclBuilder(*SemaPtr, HLSLNamespace, "RWByteAddressBuffer") .finalizeForwardDeclaration(); onCompletion(Decl, [this](CXXRecordDecl *Decl) { @@ -480,6 +482,8 @@ void HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() { /*RawBuffer=*/true, /*HasCounter=*/false) .completeDefinition(); }); + CompleteType(Decl); + Decl = BuiltinTypeDeclBuilder(*SemaPtr, HLSLNamespace, "RasterizerOrderedByteAddressBuffer") .finalizeForwardDeclaration(); @@ -488,6 +492,7 @@ void HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() { /*RawBuffer=*/true, /*HasCounter=*/false) .completeDefinition(); }); + CompleteType(Decl); } void HLSLExternalSemaSource::onCompletion(CXXRecordDecl *Record, From 6187901b52f7c08756d1f99df7ab511fdea68e54 Mon Sep 17 00:00:00 2001 From: KungFuDonkey Date: Thu, 16 Oct 2025 18:42:42 +0200 Subject: [PATCH 2/2] Added ConstantBuffer --- clang/lib/Sema/HLSLExternalSemaSource.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/clang/lib/Sema/HLSLExternalSemaSource.cpp b/clang/lib/Sema/HLSLExternalSemaSource.cpp index f7fb04b7b0f60..a4bd87c9f9a39 100644 --- a/clang/lib/Sema/HLSLExternalSemaSource.cpp +++ b/clang/lib/Sema/HLSLExternalSemaSource.cpp @@ -493,6 +493,16 @@ void HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() { .completeDefinition(); }); CompleteType(Decl); + + Decl = BuiltinTypeDeclBuilder(*SemaPtr, HLSLNamespace, "ConstantBuffer") + .addSimpleTemplateParams({"element_type"}, StructuredBufferConcept) + .finalizeForwardDeclaration(); + onCompletion(Decl, [this](CXXRecordDecl *Decl) { + setupBufferType(Decl, *SemaPtr, ResourceClass::CBuffer, /*IsROV=*/true, + /*RawBuffer=*/false, /*HasCounter=*/false) + .completeDefinition(); + }); + CompleteType(Decl); } void HLSLExternalSemaSource::onCompletion(CXXRecordDecl *Record,