@@ -112,6 +112,7 @@ struct BuiltinTypeDeclBuilder {
112112
113113 BuiltinTypeDeclBuilder &
114114 addHandleMember (Sema &S, ResourceClass RC, ResourceKind RK, bool IsROV,
115+ bool RawBuffer,
115116 AccessSpecifier Access = AccessSpecifier::AS_private) {
116117 if (Record->isCompleteDefinition ())
117118 return *this ;
@@ -135,10 +136,11 @@ struct BuiltinTypeDeclBuilder {
135136 SmallVector<const Attr *> Attrs = {
136137 HLSLResourceClassAttr::CreateImplicit (Record->getASTContext (), RC),
137138 IsROV ? HLSLROVAttr::CreateImplicit (Record->getASTContext ()) : nullptr ,
139+ RawBuffer ? HLSLRawBufferAttr::CreateImplicit (Record->getASTContext ())
140+ : nullptr ,
138141 ElementTypeInfo ? HLSLContainedTypeAttr::CreateImplicit (
139142 Record->getASTContext (), ElementTypeInfo)
140- : nullptr ,
141- };
143+ : nullptr };
142144 Attr *ResourceAttr =
143145 HLSLResourceAttr::CreateImplicit (Record->getASTContext (), RK);
144146 if (CreateHLSLAttributedResourceType (S, Ty, Attrs, AttributedResTy))
@@ -507,9 +509,9 @@ void HLSLExternalSemaSource::defineTrivialHLSLTypes() {
507509// / Set up common members and attributes for buffer types
508510static BuiltinTypeDeclBuilder setupBufferType (CXXRecordDecl *Decl, Sema &S,
509511 ResourceClass RC, ResourceKind RK,
510- bool IsROV) {
512+ bool IsROV, bool RawBuffer ) {
511513 return BuiltinTypeDeclBuilder (Decl)
512- .addHandleMember (S, RC, RK, IsROV)
514+ .addHandleMember (S, RC, RK, IsROV, RawBuffer )
513515 .addDefaultHandleConstructor (S, RC);
514516}
515517
@@ -522,7 +524,7 @@ void HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() {
522524 onCompletion (Decl, [this ](CXXRecordDecl *Decl) {
523525 setupBufferType (Decl, *SemaPtr, ResourceClass::UAV,
524526 ResourceKind::TypedBuffer,
525- /* IsROV=*/ false )
527+ /* IsROV=*/ false , /* RawBuffer= */ false )
526528 .addArraySubscriptOperators ()
527529 .completeDefinition ();
528530 });
@@ -533,7 +535,8 @@ void HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() {
533535 .Record ;
534536 onCompletion (Decl, [this ](CXXRecordDecl *Decl) {
535537 setupBufferType (Decl, *SemaPtr, ResourceClass::UAV,
536- ResourceKind::TypedBuffer, /* IsROV=*/ true )
538+ ResourceKind::TypedBuffer, /* IsROV=*/ true ,
539+ /* RawBuffer=*/ false )
537540 .addArraySubscriptOperators ()
538541 .completeDefinition ();
539542 });
@@ -543,7 +546,8 @@ void HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() {
543546 .Record ;
544547 onCompletion (Decl, [this ](CXXRecordDecl *Decl) {
545548 setupBufferType (Decl, *SemaPtr, ResourceClass::UAV,
546- ResourceKind::TypedBuffer, /* IsROV=*/ false )
549+ ResourceKind::TypedBuffer, /* IsROV=*/ false ,
550+ /* RawBuffer=*/ true )
547551 .addArraySubscriptOperators ()
548552 .completeDefinition ();
549553 });
0 commit comments