================ @@ -172,6 +172,23 @@ Decl *SemaHLSL::ActOnStartBuffer(Scope *BufferScope, bool CBuffer, return Result; } +static unsigned calculateLegacyCbufferFieldAlign(const ASTContext &Context, + QualType T) { + // Arrays and Structs are always aligned to new buffer rows + if (T->isArrayType() || T->isStructureType()) + return 16; + + // Vectors are aligned to the type they contain + if (const VectorType *VT = T->getAs<VectorType>()) + return calculateLegacyCbufferFieldAlign(Context, VT->getElementType()); ---------------- tex3d wrote:
This test would have had no difference with the change you made. It would have looked the same as two 64-bit values, with the same locations. I think you'll need something like this: ```hlsl struct S6 { float a; float2 b; }; cbuffer CB6Pass { S6 s6p : packoffset(c0.x); float f6p : packoffset(c0.w); } ``` https://github.com/llvm/llvm-project/pull/128086 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits