Mesa (master): glsl: Don't remove XFB-only varyings.
Kenneth Graunke
kwg at kemper.freedesktop.org
Mon Apr 11 02:12:00 UTC 2016
Module: Mesa
Branch: master
Commit: 26c56e24e700d0ab4c6499fea28328045b5e4b32
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=26c56e24e700d0ab4c6499fea28328045b5e4b32
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Sun Apr 3 00:48:03 2016 -0700
glsl: Don't remove XFB-only varyings.
Consider the case of linking a program with both a vertex and fragment
shader. The VS may compute output varyings that are intended for
transform feedback, and not read by the fragment shader.
In this case, var->data.is_unmatched_generic_inout will be true,
but we still cannot eliminate the varyings. We need to also check
!var->data.is_xfb_only.
Fixes failures in ES31-CTS.gpu_shader5.fma_precision_*, which happen
to use transform feedback in a way we apparently hadn't seen before.
Cc: mesa-stable at lists.freedesktop.org
Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
---
src/compiler/glsl/link_varyings.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
index e9d0067..87606be 100644
--- a/src/compiler/glsl/link_varyings.cpp
+++ b/src/compiler/glsl/link_varyings.cpp
@@ -488,7 +488,7 @@ remove_unused_shader_inputs_and_outputs(bool is_separate_shader_object,
* its value is used by other shader stages. This will cause the
* variable to have a location assigned.
*/
- if (var->data.is_unmatched_generic_inout) {
+ if (var->data.is_unmatched_generic_inout && !var->data.is_xfb_only) {
assert(var->data.mode != ir_var_temporary);
var->data.mode = ir_var_auto;
}
More information about the mesa-commit
mailing list