i965: Don't allocate an MCS for 16x MSAA and width > 8192.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 13 Dec 2017 17:45:49 +0000 (09:45 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 14 Dec 2017 08:37:33 +0000 (00:37 -0800)
The hardware doesn't support this, and isl_surf_get_mcs_surf will fail.

I feel a bit bad replicating this logic, but we want to decide up front.

This fixes the following test when run with --deqp-surface-width=16384:
- GTF-GL46.gtf30.GL3Tests.framebuffer_blit.framebuffer_blit_error_blitframebuffer_multisampled_framebuffers_different_sample_count

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/mesa/drivers/dri/i965/intel_mipmap_tree.c

index c1a4ce184f5c20ee8ea8e799067c884ed2d41177..ead0c359c0fd35349a9f7aba8cd0a41d596e95f9 100644 (file)
@@ -73,6 +73,10 @@ intel_miptree_supports_mcs(struct brw_context *brw,
    if (devinfo->gen < 7)
       return false;
 
+   /* See isl_surf_get_mcs_surf for details. */
+   if (mt->surf.samples == 16 && mt->surf.logical_level0_px.width > 8192)
+      return false;
+
    /* In Gen7, IMS layout is only used for depth and stencil buffers. */
    switch (_mesa_get_format_base_format(mt->format)) {
    case GL_DEPTH_COMPONENT: