summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2016-09-24 10:17:26 +1000
committerTimothy Arceri <[email protected]>2016-09-24 10:17:26 +1000
commit29c174a3e57c9d6ea36fcfb75e0a04b76fc03ee6 (patch)
treefe3105f5149e6e1eedcc891cd1c8cdc7a1677f32
parent943b69cddd2ae90e0b0fcab2dff4a7eea81bb3cc (diff)
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.
-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, 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;