Commit f4ba9522 by John Kessenich

GLSL: Increase supported sizes of XBF strides and offsets.

parent 579ccece
...@@ -171,6 +171,8 @@ ERROR: xfb_buffer 0, xfb_stride 92 ...@@ -171,6 +171,8 @@ ERROR: xfb_buffer 0, xfb_stride 92
ERROR: Linking vertex stage: xfb_stride must be multiple of 4: ERROR: Linking vertex stage: xfb_stride must be multiple of 4:
ERROR: xfb_buffer 5, xfb_stride 6 ERROR: xfb_buffer 5, xfb_stride 6
ERROR: Linking vertex stage: xfb_stride is too large: 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 ERROR: xfb_buffer 7, components (1/4 stride) needed are 66, gl_MaxTransformFeedbackInterleavedComponents is 64
Shader version: 440 Shader version: 440
......
...@@ -774,7 +774,7 @@ public: ...@@ -774,7 +774,7 @@ public:
int layoutOffset; int layoutOffset;
int layoutAlign; int layoutAlign;
unsigned int layoutLocation :12; unsigned int layoutLocation : 12;
static const unsigned int layoutLocationEnd = 0xFFF; static const unsigned int layoutLocationEnd = 0xFFF;
unsigned int layoutComponent : 3; unsigned int layoutComponent : 3;
...@@ -795,11 +795,11 @@ public: ...@@ -795,11 +795,11 @@ public:
unsigned int layoutXfbBuffer : 4; unsigned int layoutXfbBuffer : 4;
static const unsigned int layoutXfbBufferEnd = 0xF; static const unsigned int layoutXfbBufferEnd = 0xF;
unsigned int layoutXfbStride : 10; unsigned int layoutXfbStride : 14;
static const unsigned int layoutXfbStrideEnd = 0x3FF; static const unsigned int layoutXfbStrideEnd = 0x3FFF;
unsigned int layoutXfbOffset : 10; unsigned int layoutXfbOffset : 13;
static const unsigned int layoutXfbOffsetEnd = 0x3FF; static const unsigned int layoutXfbOffsetEnd = 0x1FFF;
unsigned int layoutAttachment : 8; // for input_attachment_index unsigned int layoutAttachment : 8; // for input_attachment_index
static const unsigned int layoutAttachmentEnd = 0XFF; static const unsigned int layoutAttachmentEnd = 0XFF;
......
// This header is generated by the make-revision script. // This header is generated by the make-revision script.
#define GLSLANG_PATCH_LEVEL 2984 #define GLSLANG_PATCH_LEVEL 2988
...@@ -4936,11 +4936,13 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi ...@@ -4936,11 +4936,13 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
} else if (id == "xfb_stride") { } else if (id == "xfb_stride") {
// "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the // "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the
// implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents." // implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents."
if (value > 4 * resources.maxTransformFeedbackInterleavedComponents) if (value > 4 * resources.maxTransformFeedbackInterleavedComponents) {
error(loc, "1/4 stride is too large:", id.c_str(), "gl_MaxTransformFeedbackInterleavedComponents is %d", resources.maxTransformFeedbackInterleavedComponents); error(loc, "1/4 stride is too large:", id.c_str(), "gl_MaxTransformFeedbackInterleavedComponents is %d",
else if (value >= (int)TQualifier::layoutXfbStrideEnd) resources.maxTransformFeedbackInterleavedComponents);
}
if (value >= (int)TQualifier::layoutXfbStrideEnd)
error(loc, "stride is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbStrideEnd-1); 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; publicType.qualifier.layoutXfbStride = value;
return; return;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment