ERROR: Linking vertex stage: xfb_stride must be multiple of 4:
ERROR: xfb_buffer 5, xfb_stride 6
ERROR: Linking vertex stage: xfb_stride is too large:
+ERROR: xfb_buffer 6, components (1/4 stride) needed are 500, gl_MaxTransformFeedbackInterleavedComponents is 64
+ERROR: Linking vertex stage: xfb_stride is too large:
ERROR: xfb_buffer 7, components (1/4 stride) needed are 66, gl_MaxTransformFeedbackInterleavedComponents is 64
Shader version: 440
int layoutOffset;
int layoutAlign;
- unsigned int layoutLocation :12;
- static const unsigned int layoutLocationEnd = 0xFFF;
+ unsigned int layoutLocation : 12;
+ static const unsigned int layoutLocationEnd = 0xFFF;
- unsigned int layoutComponent : 3;
- static const unsigned int layoutComponentEnd = 4;
+ unsigned int layoutComponent : 3;
+ static const unsigned int layoutComponentEnd = 4;
- unsigned int layoutSet : 7;
- static const unsigned int layoutSetEnd = 0x3F;
+ unsigned int layoutSet : 7;
+ static const unsigned int layoutSetEnd = 0x3F;
- unsigned int layoutBinding : 16;
- static const unsigned int layoutBindingEnd = 0xFFFF;
+ unsigned int layoutBinding : 16;
+ static const unsigned int layoutBindingEnd = 0xFFFF;
- unsigned int layoutIndex : 8;
- static const unsigned int layoutIndexEnd = 0xFF;
+ unsigned int layoutIndex : 8;
+ static const unsigned int layoutIndexEnd = 0xFF;
- unsigned int layoutStream : 8;
- static const unsigned int layoutStreamEnd = 0xFF;
+ unsigned int layoutStream : 8;
+ static const unsigned int layoutStreamEnd = 0xFF;
- unsigned int layoutXfbBuffer : 4;
- static const unsigned int layoutXfbBufferEnd = 0xF;
+ unsigned int layoutXfbBuffer : 4;
+ static const unsigned int layoutXfbBufferEnd = 0xF;
- unsigned int layoutXfbStride : 10;
- static const unsigned int layoutXfbStrideEnd = 0x3FF;
+ unsigned int layoutXfbStride : 14;
+ static const unsigned int layoutXfbStrideEnd = 0x3FFF;
- unsigned int layoutXfbOffset : 10;
- static const unsigned int layoutXfbOffsetEnd = 0x3FF;
+ unsigned int layoutXfbOffset : 13;
+ static const unsigned int layoutXfbOffsetEnd = 0x1FFF;
- unsigned int layoutAttachment : 8; // for input_attachment_index
- static const unsigned int layoutAttachmentEnd = 0XFF;
+ unsigned int layoutAttachment : 8; // for input_attachment_index
+ static const unsigned int layoutAttachmentEnd = 0XFF;
unsigned int layoutSpecConstantId : 11;
static const unsigned int layoutSpecConstantIdEnd = 0x7FF;
- TLayoutFormat layoutFormat : 8;
+ TLayoutFormat layoutFormat : 8;
bool layoutPushConstant;
} else if (id == "xfb_stride") {
// "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the
// implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents."
- if (value > 4 * resources.maxTransformFeedbackInterleavedComponents)
- error(loc, "1/4 stride is too large:", id.c_str(), "gl_MaxTransformFeedbackInterleavedComponents is %d", resources.maxTransformFeedbackInterleavedComponents);
- else if (value >= (int)TQualifier::layoutXfbStrideEnd)
+ if (value > 4 * resources.maxTransformFeedbackInterleavedComponents) {
+ error(loc, "1/4 stride is too large:", id.c_str(), "gl_MaxTransformFeedbackInterleavedComponents is %d",
+ resources.maxTransformFeedbackInterleavedComponents);
+ }
+ if (value >= (int)TQualifier::layoutXfbStrideEnd)
error(loc, "stride is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbStrideEnd-1);
- if (value < (int)TQualifier::layoutXfbStrideEnd)
+ else
publicType.qualifier.layoutXfbStride = value;
return;
}