glsl: avoid lowering texcoord array except in simple cases
authorIlia Mirkin <imirkin@alum.mit.edu>
Sun, 26 Aug 2018 17:48:10 +0000 (13:48 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Thu, 30 Aug 2018 00:51:23 +0000 (20:51 -0400)
With compat creeping up to geometry and tess shaders, lowering texcoord
accesses/writes becomes more complicated. Since it's an optimization
anyways, just avoid the complication for now.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/compiler/glsl/opt_dead_builtin_varyings.cpp

index 0cb04b34589ad7063f71caf4be7d9b89e68fdd72..6ed00128ed93110e19406771f755fd7f33f63f24 100644 (file)
@@ -558,6 +558,9 @@ do_dead_builtin_varyings(struct gl_context *ctx,
    if (producer) {
       producer_info.get(producer->ir, num_tfeedback_decls, tfeedback_decls);
 
+      if (producer->Stage == MESA_SHADER_TESS_CTRL)
+         producer_info.lower_texcoord_array = false;
+
       if (!consumer) {
          /* At least eliminate unused gl_TexCoord elements. */
          if (producer_info.lower_texcoord_array) {
@@ -570,6 +573,9 @@ do_dead_builtin_varyings(struct gl_context *ctx,
    if (consumer) {
       consumer_info.get(consumer->ir, 0, NULL);
 
+      if (consumer->Stage != MESA_SHADER_FRAGMENT)
+         consumer_info.lower_texcoord_array = false;
+
       if (!producer) {
          /* At least eliminate unused gl_TexCoord elements. */
          if (consumer_info.lower_texcoord_array) {