Revert "glsl: move xfb BufferStride into gl_transform_feedback_info"
This reverts commit f5a6aab403
.
This broke some tests. It seems gl_transform_feedback_info gets memset
to 0 so we were losing the values in BufferStride before we used them.
This commit is contained in:
parent
943b69cddd
commit
29c174a3e5
|
@ -1136,11 +1136,11 @@ store_tfeedback_info(struct gl_context *ctx, struct gl_shader_program *prog,
|
||||||
/* Apply any xfb_stride global qualifiers */
|
/* Apply any xfb_stride global qualifiers */
|
||||||
if (has_xfb_qualifiers) {
|
if (has_xfb_qualifiers) {
|
||||||
for (unsigned j = 0; j < MAX_FEEDBACK_BUFFERS; j++) {
|
for (unsigned j = 0; j < MAX_FEEDBACK_BUFFERS; j++) {
|
||||||
if (prog->LinkedTransformFeedback.BufferStride[j]) {
|
if (prog->TransformFeedback.BufferStride[j]) {
|
||||||
buffers |= 1 << j;
|
buffers |= 1 << j;
|
||||||
explicit_stride[j] = true;
|
explicit_stride[j] = true;
|
||||||
prog->LinkedTransformFeedback.Buffers[j].Stride =
|
prog->LinkedTransformFeedback.Buffers[j].Stride =
|
||||||
prog->LinkedTransformFeedback.BufferStride[j] / 4;
|
prog->TransformFeedback.BufferStride[j] / 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1600,19 +1600,19 @@ link_xfb_stride_layout_qualifiers(struct gl_context *ctx,
|
||||||
|
|
||||||
for (unsigned j = 0; j < MAX_FEEDBACK_BUFFERS; j++) {
|
for (unsigned j = 0; j < MAX_FEEDBACK_BUFFERS; j++) {
|
||||||
if (linked_shader->info.TransformFeedback.BufferStride[j]) {
|
if (linked_shader->info.TransformFeedback.BufferStride[j]) {
|
||||||
prog->LinkedTransformFeedback.BufferStride[j] =
|
prog->TransformFeedback.BufferStride[j] =
|
||||||
linked_shader->info.TransformFeedback.BufferStride[j];
|
linked_shader->info.TransformFeedback.BufferStride[j];
|
||||||
|
|
||||||
/* We will validate doubles at a later stage */
|
/* We will validate doubles at a later stage */
|
||||||
if (prog->LinkedTransformFeedback.BufferStride[j] % 4) {
|
if (prog->TransformFeedback.BufferStride[j] % 4) {
|
||||||
linker_error(prog, "invalid qualifier xfb_stride=%d must be a "
|
linker_error(prog, "invalid qualifier xfb_stride=%d must be a "
|
||||||
"multiple of 4 or if its applied to a type that is "
|
"multiple of 4 or if its applied to a type that is "
|
||||||
"or contains a double a multiple of 8.",
|
"or contains a double a multiple of 8.",
|
||||||
prog->LinkedTransformFeedback.BufferStride[j]);
|
prog->TransformFeedback.BufferStride[j]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prog->LinkedTransformFeedback.BufferStride[j] / 4 >
|
if (prog->TransformFeedback.BufferStride[j] / 4 >
|
||||||
ctx->Const.MaxTransformFeedbackInterleavedComponents) {
|
ctx->Const.MaxTransformFeedbackInterleavedComponents) {
|
||||||
linker_error(prog,
|
linker_error(prog,
|
||||||
"The MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS "
|
"The MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS "
|
||||||
|
|
|
@ -1696,9 +1696,6 @@ struct gl_transform_feedback_info
|
||||||
struct gl_transform_feedback_varying_info *Varyings;
|
struct gl_transform_feedback_varying_info *Varyings;
|
||||||
GLint NumVarying;
|
GLint NumVarying;
|
||||||
|
|
||||||
/** Global xfb_stride out qualifier if any */
|
|
||||||
GLuint BufferStride[MAX_FEEDBACK_BUFFERS];
|
|
||||||
|
|
||||||
struct gl_transform_feedback_buffer Buffers[MAX_FEEDBACK_BUFFERS];
|
struct gl_transform_feedback_buffer Buffers[MAX_FEEDBACK_BUFFERS];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2743,6 +2740,8 @@ struct gl_shader_program
|
||||||
*/
|
*/
|
||||||
struct {
|
struct {
|
||||||
GLenum BufferMode;
|
GLenum BufferMode;
|
||||||
|
/** Global xfb_stride out qualifier if any */
|
||||||
|
GLuint BufferStride[MAX_FEEDBACK_BUFFERS];
|
||||||
GLuint NumVarying;
|
GLuint NumVarying;
|
||||||
GLchar **VaryingNames; /**< Array [NumVarying] of char * */
|
GLchar **VaryingNames; /**< Array [NumVarying] of char * */
|
||||||
} TransformFeedback;
|
} TransformFeedback;
|
||||||
|
|
Loading…
Reference in New Issue