[Mesa-dev] [PATCH v2] glsl: reset BufferStride with explicit xfb_stride
Juan A. Suarez Romero
jasuarez at igalia.com
Wed Jun 21 16:41:41 UTC 2017
link_xfb_stride_layout_qualifiers() can be called multiple times, and
each time we call prog->TransformFeedback.BufferStride is reset to 0.
But we should only reset it if the shaders provide an explicit stride.
Fixes:
KHR-GL45.enhanced_layouts.xfb_stride_of_empty_list
KHR-GL45.enhanced_layouts.xfb_stride_of_empty_list_and_api
v2: do reset only if shaders provide an explicit stride
Signed-off-by: Juan A. Suarez Romero <jasuarez at igalia.com>
---
src/compiler/glsl/linker.cpp | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index adfa3b7b1d..5a261a64f5 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -1623,8 +1623,14 @@ link_xfb_stride_layout_qualifiers(struct gl_context *ctx,
struct gl_shader **shader_list,
unsigned num_shaders)
{
- for (unsigned i = 0; i < MAX_FEEDBACK_BUFFERS; i++) {
- prog->TransformFeedback.BufferStride[i] = 0;
+ for (unsigned s = 0; s < num_shaders; s++) {
+ struct gl_shader *shader = shader_list[s];
+
+ for (unsigned i = 0; i < MAX_FEEDBACK_BUFFERS; i++) {
+ if (shader->TransformFeedbackBufferStride[i]) {
+ prog->TransformFeedback.BufferStride[i] = 0;
+ }
+ }
}
for (unsigned i = 0; i < num_shaders; i++) {
--
2.11.0
More information about the mesa-dev
mailing list