summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2016-09-23 13:05:20 +1000
committerTimothy Arceri <[email protected]>2016-09-24 09:18:29 +1000
commitf5a6aab4031bc4754756c1773411728ad9a73381 (patch)
tree256bc632e96bdf866d44386d7dbb6dc5ae72880d
parent85e9bbc14d93fa7166c9ae075ee7ae29a8313e3f (diff)
glsl: move xfb BufferStride into gl_transform_feedback_info
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 <[email protected]>
-rw-r--r--src/compiler/glsl/link_varyings.cpp4
-rw-r--r--src/compiler/glsl/linker.cpp8
-rw-r--r--src/mesa/main/mtypes.h5
3 files changed, 9 insertions, 8 deletions
diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
index e622b3e46bc..e339823a5fe 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 f3eece233e6..ac4191f2cd5 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -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 "
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 85aeb1e0df3..5bbfd13cba7 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];
};
@@ -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;