+ /* Lower textureGrad() with samplerCubeShadow even if we have the sample_d_c
+ * message. GLSL provides gradients for the 'r' coordinate. Unfortunately:
+ *
+ * From the Ivybridge PRM, Volume 4, Part 1, sample_d message description:
+ * "The r coordinate contains the faceid, and the r gradients are ignored
+ * by hardware."
+ *
+ * We likely need to do a similar treatment for samplerCube and
+ * samplerCubeArray, but we have insufficient testing for that at the moment.
+ */
+ bool need_lowering = !has_sample_d_c ||
+ ir->sampler->type->sampler_dimensionality == GLSL_SAMPLER_DIM_CUBE;
+
+ if (!need_lowering)
+ return visit_continue;
+