[Mesa-dev] [PATCH] glsl: move xfb BufferStride into gl_transform_feedback_info

Timothy Arceri timothy.arceri at collabora.com
Fri Sep 23 03:05:20 UTC 2016


It makes more sense to have this here where we store the other values
from xfb qualifiers. The struct it was previously part of is now only
used to store values to come from the api.
---
 src/compiler/glsl/link_varyings.cpp | 4 ++--
 src/compiler/glsl/linker.cpp        | 8 ++++----
 src/mesa/main/mtypes.h              | 5 +++--
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
index e622b3e..e339823 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->TransformFeedback.BufferStride[j]) {
+            if (prog->LinkedTransformFeedback.BufferStride[j]) {
                buffers |= 1 << j;
                explicit_stride[j] = true;
                prog->LinkedTransformFeedback.Buffers[j].Stride =
-                  prog->TransformFeedback.BufferStride[j] / 4;
+                  prog->LinkedTransformFeedback.BufferStride[j] / 4;
             }
          }
       }
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index b8dc8a7..d040b92 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -1695,19 +1695,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->TransformFeedback.BufferStride[j] =
+         prog->LinkedTransformFeedback.BufferStride[j] =
             linked_shader->info.TransformFeedback.BufferStride[j];
 
          /* We will validate doubles at a later stage */
-         if (prog->TransformFeedback.BufferStride[j] % 4) {
+         if (prog->LinkedTransformFeedback.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->TransformFeedback.BufferStride[j]);
+                         prog->LinkedTransformFeedback.BufferStride[j]);
             return;
          }
 
-         if (prog->TransformFeedback.BufferStride[j] / 4 >
+         if (prog->LinkedTransformFeedback.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 1ad93c3..b621431 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1696,6 +1696,9 @@ 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];
 };
 
@@ -2756,8 +2759,6 @@ 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.7.4



More information about the mesa-dev mailing list