isl: Don't require VALIGN_2 for R32G32B32_FLOAT on Haswell.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 15 Dec 2017 00:17:45 +0000 (16:17 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 15 Dec 2017 22:00:09 +0000 (14:00 -0800)
According to the RENDER_SURFACE_STATE internal documentation, the
R32G32B32_FLOAT restriction is marked "IVB" only.  We choose to apply
it to Ivybridge and Baytrail, but not Haswell.

Apparently fixes KHR-GL46.texture_size_promotion.functional on Haswell.

Changes these tests from crashing to skipping on Haswell:
- KHR-GL46.direct_state_access.textures_storage_multisample_2d_rgb32f
- KHR-GL46.direct_state_access.textures_storage_multisample_3d_rgb32f

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/isl/isl_gen7.c

index c42428cba7a06e4cc4425621b4da3c9880fdb025..4fa9851233f206032b96f1bce0fbbf33d8a5633c 100644 (file)
@@ -38,9 +38,11 @@ gen7_format_needs_valign2(const struct isl_device *dev,
     *      (0x190)
     *
     *    - VALIGN_4 is not supported for surface format R32G32B32_FLOAT.
+    *
+    * The R32G32B32_FLOAT restriction is dropped on Haswell.
     */
    return isl_format_is_yuv(format) ||
-          format == ISL_FORMAT_R32G32B32_FLOAT;
+          (format == ISL_FORMAT_R32G32B32_FLOAT && !ISL_DEV_IS_HASWELL(dev));
 }
 
 bool