Mesa (master): Revert "glsl: move xfb BufferStride into gl_transform_feedback_info"

Timothy Arceri tarceri at kemper.freedesktop.org
Sat Sep 24 00:19:51 UTC 2016


Module: Mesa
Branch: master
Commit: 29c174a3e57c9d6ea36fcfb75e0a04b76fc03ee6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=29c174a3e57c9d6ea36fcfb75e0a04b76fc03ee6

Author: Timothy Arceri <timothy.arceri at collabora.com>
Date:   Sat Sep 24 10:17:26 2016 +1000

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 e339823..e622b3e 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 1806284..929a653 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 5bbfd13..85aeb1e 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;




More information about the mesa-commit mailing list