Mesa (main): iris: Disable the SMEM fallback for CCS on XeHP

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Dec 14 07:54:54 UTC 2021


Module: Mesa
Branch: main
Commit: 42a865730ef72574e179b56a314f30fdccc6cba8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=42a865730ef72574e179b56a314f30fdccc6cba8

Author: Nanley Chery <nanley.g.chery at intel.com>
Date:   Mon Sep 27 17:09:02 2021 -0700

iris: Disable the SMEM fallback for CCS on XeHP

On XeHP, CCS is only supported in local memory.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14012>

---

 src/gallium/drivers/iris/iris_resource.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c
index 8b9037866b8..348665d6332 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -412,7 +412,8 @@ iris_resource_disable_aux(struct iris_resource *res)
 
 static uint32_t
 iris_resource_alloc_flags(const struct iris_screen *screen,
-                          const struct pipe_resource *templ)
+                          const struct pipe_resource *templ,
+                          enum isl_aux_usage aux_usage)
 {
    if (templ->flags & IRIS_RESOURCE_FLAG_DEVICE_MEM)
       return 0;
@@ -443,6 +444,9 @@ iris_resource_alloc_flags(const struct iris_screen *screen,
                        PIPE_RESOURCE_FLAG_MAP_PERSISTENT))
       flags |= BO_ALLOC_SMEM;
 
+   if (screen->devinfo.verx10 >= 125 && isl_aux_usage_has_ccs(aux_usage))
+      flags |= BO_ALLOC_LMEM;
+
    if ((templ->bind & PIPE_BIND_SHARED) ||
        util_format_get_num_planes(templ->format) > 1)
       flags |= BO_ALLOC_NO_SUBALLOC;
@@ -1052,7 +1056,7 @@ iris_resource_create_for_buffer(struct pipe_screen *pscreen,
       name = "bindless surface state";
    }
 
-   unsigned flags = iris_resource_alloc_flags(screen, templ);
+   unsigned flags = iris_resource_alloc_flags(screen, templ, res->aux.usage);
 
    res->bo =
       iris_bo_alloc(screen->bufmgr, name, templ->width0, 1, memzone, flags);
@@ -1095,10 +1099,13 @@ iris_resource_create_with_modifiers(struct pipe_screen *pscreen,
       iris_resource_configure_main(screen, res, templ, modifier, 0);
    assert(isl_surf_created_successfully);
 
+   if (!iris_resource_configure_aux(screen, res, false))
+      goto fail;
+
    const char *name = "miptree";
    enum iris_memory_zone memzone = IRIS_MEMZONE_OTHER;
 
-   unsigned int flags = iris_resource_alloc_flags(screen, templ);
+   unsigned flags = iris_resource_alloc_flags(screen, templ, res->aux.usage);
 
    /* These are for u_upload_mgr buffers only */
    assert(!(templ->flags & (IRIS_RESOURCE_FLAG_SHADER_MEMZONE |
@@ -1106,9 +1113,6 @@ iris_resource_create_with_modifiers(struct pipe_screen *pscreen,
                             IRIS_RESOURCE_FLAG_DYNAMIC_MEMZONE |
                             IRIS_RESOURCE_FLAG_BINDLESS_MEMZONE)));
 
-   if (!iris_resource_configure_aux(screen, res, false))
-      goto fail;
-
    /* Modifiers require the aux data to be in the same buffer as the main
     * surface, but we combine them even when a modifier is not being used.
     */



More information about the mesa-commit mailing list