From 29c174a3e57c9d6ea36fcfb75e0a04b76fc03ee6 Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Sat, 24 Sep 2016 10:17:26 +1000 Subject: [PATCH] Revert "glsl: move xfb BufferStride into gl_transform_feedback_info" This reverts commit f5a6aab4031bc4754756c1773411728ad9a73381. 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. --- src/compiler/glsl/link_varyings.cpp | 4 ++-- src/compiler/glsl/linker.cpp | 8 ++++---- src/mesa/main/mtypes.h | 5 ++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp index e339823a5fe..e622b3e46bc 100644 --- a/src/compiler/glsl/link_varyings.cpp +++ b/src/compiler/glsl/link_varyings.cpp @@ -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; } } } diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index 18062848e7a..929a653e137 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -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 " diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 5bbfd13cba7..85aeb1e0df3 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -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; -- 2.30.2