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:
Timothy Arceri 2016-09-24 10:17:26 +10:00
parent 943b69cddd
commit 29c174a3e5
3 changed files with 8 additions and 9 deletions

View File

@ -1136,11 +1136,11 @@ store_tfeedback_info(struct gl_context *ctx, struct gl_shader_program *prog,
/* Apply any xfb_stride global qualifiers */
if (has_xfb_qualifiers) {
for (unsigned j = 0; j < MAX_FEEDBACK_BUFFERS; j++) {
if (prog->LinkedTransformFeedback.BufferStride[j]) {
if (prog->TransformFeedback.BufferStride[j]) {
buffers |= 1 << j;
explicit_stride[j] = true;
prog->LinkedTransformFeedback.Buffers[j].Stride =
prog->LinkedTransformFeedback.BufferStride[j] / 4;
prog->TransformFeedback.BufferStride[j] / 4;
}
}
}

View File

@ -1600,19 +1600,19 @@ link_xfb_stride_layout_qualifiers(struct gl_context *ctx,
for (unsigned j = 0; j < MAX_FEEDBACK_BUFFERS; j++) {
if (linked_shader->info.TransformFeedback.BufferStride[j]) {
prog->LinkedTransformFeedback.BufferStride[j] =
prog->TransformFeedback.BufferStride[j] =
linked_shader->info.TransformFeedback.BufferStride[j];
/* 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 "
"multiple of 4 or if its applied to a type that is "
"or contains a double a multiple of 8.",
prog->LinkedTransformFeedback.BufferStride[j]);
prog->TransformFeedback.BufferStride[j]);
return;
}
if (prog->LinkedTransformFeedback.BufferStride[j] / 4 >
if (prog->TransformFeedback.BufferStride[j] / 4 >
ctx->Const.MaxTransformFeedbackInterleavedComponents) {
linker_error(prog,
"The MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS "

View File

@ -1696,9 +1696,6 @@ struct gl_transform_feedback_info
struct gl_transform_feedback_varying_info *Varyings;
GLint NumVarying;
/** Global xfb_stride out qualifier if any */
GLuint BufferStride[MAX_FEEDBACK_BUFFERS];
struct gl_transform_feedback_buffer Buffers[MAX_FEEDBACK_BUFFERS];
};
@ -2743,6 +2740,8 @@ struct gl_shader_program
*/
struct {
GLenum BufferMode;
/** Global xfb_stride out qualifier if any */
GLuint BufferStride[MAX_FEEDBACK_BUFFERS];
GLuint NumVarying;
GLchar **VaryingNames; /**< Array [NumVarying] of char * */
} TransformFeedback;