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

Author: Rob Clark <[email protected]>
Date:   Thu Sep 28 13:22:55 2023 -0700

freedreno: Add PIPE_CAP_HAS_CONST_BW support

Allow for tiled layouts rather than having mesa/st force us back to
linear.

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

---

 src/gallium/drivers/freedreno/freedreno_resource.c | 5 +++++
 src/gallium/drivers/freedreno/freedreno_screen.c   | 1 +
 2 files changed, 6 insertions(+)

diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c 
b/src/gallium/drivers/freedreno/freedreno_resource.c
index 63f9705c0a5..a57807071f7 100644
--- a/src/gallium/drivers/freedreno/freedreno_resource.c
+++ b/src/gallium/drivers/freedreno/freedreno_resource.c
@@ -1283,6 +1283,11 @@ get_best_layout(struct fd_screen *screen,
    if (tmpl->bind & PIPE_BIND_USE_FRONT_RENDERING)
       ubwc_ok = false;
 
+   /* Disallow UBWC when asked not to use data dependent bandwidth compression:
+    */
+   if (tmpl->bind & PIPE_BIND_CONST_BW)
+      ubwc_ok = false;
+
    if (ubwc_ok && !can_implicit &&
        !drm_find_modifier(DRM_FORMAT_MOD_QCOM_COMPRESSED, modifiers, count)) {
       perf_debug("%" PRSC_FMT
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c 
b/src/gallium/drivers/freedreno/freedreno_screen.c
index 8ec300f8553..e101a3f7c5d 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.c
+++ b/src/gallium/drivers/freedreno/freedreno_screen.c
@@ -249,6 +249,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum 
pipe_cap param)
    case PIPE_CAP_TEXTURE_MIRROR_CLAMP_TO_EDGE:
    case PIPE_CAP_GL_SPIRV:
    case PIPE_CAP_FBFETCH_COHERENT:
+   case PIPE_CAP_HAS_CONST_BW:
       return 1;
 
    case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:

Reply via email to