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

Author: Rob Clark <[email protected]>
Date:   Tue Oct  3 13:34:09 2023 -0700

iris: Add PIPE_CAP_HAS_CONST_BW support

Signed-off-by: Rob Clark <[email protected]>
Reviewed-by: Tapani Pälli <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25464>

---

 src/gallium/drivers/iris/iris_resource.c | 8 ++++++--
 src/gallium/drivers/iris/iris_screen.c   | 1 +
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/iris/iris_resource.c 
b/src/gallium/drivers/iris/iris_resource.c
index c8d20823d4f..f14b2e5b944 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -131,12 +131,14 @@ modifier_is_supported(const struct intel_device_info 
*devinfo,
       return false;
    }
 
+   bool no_ccs = INTEL_DEBUG(DEBUG_NO_CCS) || (bind & PIPE_BIND_CONST_BW);
+
    /* Check remaining requirements. */
    switch (modifier) {
    case I915_FORMAT_MOD_4_TILED_MTL_MC_CCS:
    case I915_FORMAT_MOD_4_TILED_DG2_MC_CCS:
    case I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS:
-      if (INTEL_DEBUG(DEBUG_NO_CCS))
+      if (no_ccs)
          return false;
 
       if (pfmt != PIPE_FORMAT_BGRA8888_UNORM &&
@@ -159,7 +161,7 @@ modifier_is_supported(const struct intel_device_info 
*devinfo,
    case I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC:
    case I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS:
    case I915_FORMAT_MOD_Y_TILED_CCS: {
-      if (INTEL_DEBUG(DEBUG_NO_CCS))
+      if (no_ccs)
          return false;
 
       enum isl_format rt_format =
@@ -739,6 +741,8 @@ iris_resource_configure_main(const struct iris_screen 
*screen,
 
    if (res->mod_info && !isl_drm_modifier_has_aux(modifier))
       usage |= ISL_SURF_USAGE_DISABLE_AUX_BIT;
+   else if (templ->bind & PIPE_BIND_CONST_BW)
+      usage |= ISL_SURF_USAGE_DISABLE_AUX_BIT;
 
    if (templ->usage == PIPE_USAGE_STAGING)
       usage |= ISL_SURF_USAGE_STAGING_BIT;
diff --git a/src/gallium/drivers/iris/iris_screen.c 
b/src/gallium/drivers/iris/iris_screen.c
index 42298daddc8..5c5364d9eca 100644
--- a/src/gallium/drivers/iris/iris_screen.c
+++ b/src/gallium/drivers/iris/iris_screen.c
@@ -301,6 +301,7 @@ iris_get_param(struct pipe_screen *pscreen, enum pipe_cap 
param)
    case PIPE_CAP_LEGACY_MATH_RULES:
    case PIPE_CAP_ALPHA_TO_COVERAGE_DITHER_CONTROL:
    case PIPE_CAP_MAP_UNSYNCHRONIZED_THREAD_SAFE:
+   case PIPE_CAP_HAS_CONST_BW:
       return true;
    case PIPE_CAP_UMA:
       return iris_bufmgr_vram_size(screen->bufmgr) == 0;

Reply via email to