[Mesa-dev] [PATCH V2 05/10] i965/Gen7: Move decision to allocate MCS surface into intel_mipmap_create

Chris Forbes chrisf at ijw.co.nz
Sat Nov 30 15:30:03 PST 2013


This gives us correct behavior for both renderbuffers (which previously
worked) and multisample textures (which would never get an MCS surface
allocated, even if CMS layout was selected)

Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
---
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index c7db0ad..4a389b9 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -611,6 +611,14 @@ intel_miptree_create(struct brw_context *brw,
        return NULL;
    }
 
+
+   if (mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
+      if (!intel_miptree_alloc_mcs(brw, mt, num_samples)) {
+         intel_miptree_release(&mt);
+         return NULL;
+      }
+   }
+
    /* If this miptree is capable of supporting fast color clears, set
     * mcs_state appropriately to ensure that fast clears will occur.
     * Allocation of the MCS miptree will be deferred until the first fast
@@ -829,12 +837,6 @@ intel_miptree_create_for_renderbuffer(struct brw_context *brw,
          goto fail;
    }
 
-   if (mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
-      ok = intel_miptree_alloc_mcs(brw, mt, num_samples);
-      if (!ok)
-         goto fail;
-   }
-
    return mt;
 
 fail:
-- 
1.8.4.2



More information about the mesa-dev mailing list