nir: Apply fragment color clamping to gl_FragData[] as well.
authorEric Anholt <eric@anholt.net>
Tue, 3 Jul 2018 22:39:21 +0000 (15:39 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 5 Jul 2018 19:39:36 +0000 (12:39 -0700)
From the ARB_color_buffer_float spec:

   35. Should the clamping of fragment shader output gl_FragData[n]
       be controlled by the fragment color clamp.

       RESOLVED: Since the destination of the FragData is a color
       buffer, the fragment color clamp control should apply.

Fixes arb_color_buffer_float-mrt mixed on v3d.

Reviewed-by: Rob Clark <robdclark@gmail.com>
src/compiler/nir/nir_lower_clamp_color_outputs.c

index b76a4d51aacad927fa2c141018669037b5586053..32f855624276dc31de78e3edfa1cbcc239c93cd1 100644 (file)
@@ -47,13 +47,8 @@ is_color_output(lower_state *state, nir_variable *out)
       }
       break;
    case MESA_SHADER_FRAGMENT:
-      switch (out->data.location) {
-      case FRAG_RESULT_COLOR:
-         return true;
-      default:
-         return false;
-      }
-      break;
+      return (out->data.location == FRAG_RESULT_COLOR ||
+              out->data.location >= FRAG_RESULT_DATA0);
    default:
       return false;
    }