glsl: move xfb BufferStride into gl_transform_feedback_info
authorTimothy Arceri <timothy.arceri@collabora.com>
Fri, 23 Sep 2016 03:05:20 +0000 (13:05 +1000)
committerTimothy Arceri <timothy.arceri@collabora.com>
Fri, 23 Sep 2016 23:18:29 +0000 (09:18 +1000)
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 that come from the api.

Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
src/compiler/glsl/link_varyings.cpp
src/compiler/glsl/linker.cpp
src/mesa/main/mtypes.h

index e622b3e46bc8e06629b599ecd99a3c4d8b6aba09..e339823a5fed7d13dc8f98b86314704aa0679c09 100644 (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->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;
             }
          }
       }
index f3eece233e66d3f87c8cf29a97e37665ea5edf88..ac4191f2cd576b6c69879c8608d93de8d9d390f3 100644 (file)
@@ -1691,19 +1691,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 "
index 85aeb1e0df3fdb1b8e47baec294bed7c77109177..5bbfd13cba70ae4cbc878857666c908fd18af6ce 100644 (file)
@@ -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];
 };
 
@@ -2740,8 +2743,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;