GLSL: Increase supported sizes of XBF strides and offsets.
This commit is contained in:
parent
579ccece45
commit
f4ba9522ec
@ -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
|
||||||
|
|||||||
8
glslang/Include/Types.h
Normal file → Executable file
8
glslang/Include/Types.h
Normal file → Executable file
@ -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;
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
// 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
|
|||||||
} 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;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user