Mesa (main): radeonsi: use PIPE_RESOURCE_FLAG_UNMAPPABLE and DRIVER_INTERNAL more

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon May 16 11:32:14 UTC 2022


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue May 10 16:36:00 2022 -0400

radeonsi: use PIPE_RESOURCE_FLAG_UNMAPPABLE and DRIVER_INTERNAL more

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16466>

---

 src/gallium/drivers/radeonsi/si_fence.c           |  1 +
 src/gallium/drivers/radeonsi/si_pipe.c            | 10 ++++++---
 src/gallium/drivers/radeonsi/si_state_shaders.cpp | 25 +++++++++++++++--------
 3 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_fence.c b/src/gallium/drivers/radeonsi/si_fence.c
index 87d0cdcd571..86ea3d37c71 100644
--- a/src/gallium/drivers/radeonsi/si_fence.c
+++ b/src/gallium/drivers/radeonsi/si_fence.c
@@ -99,6 +99,7 @@ void si_cp_release_mem(struct si_context *ctx, struct radeon_cmdbuf *cs, unsigne
                ctx->eop_bug_scratch_tmz =
                   si_aligned_buffer_create(&sscreen->b,
                                            PIPE_RESOURCE_FLAG_ENCRYPTED |
+                                           PIPE_RESOURCE_FLAG_UNMAPPABLE |
                                            SI_RESOURCE_FLAG_DRIVER_INTERNAL,
                                            PIPE_USAGE_DEFAULT,
                                            16 * sscreen->info.max_render_backends, 256);
diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
index 8b8836ae57c..94b622a2b3f 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -491,7 +491,7 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, unsign
 
    if (sctx->gfx_level == GFX7 || sctx->gfx_level == GFX8 || sctx->gfx_level == GFX9) {
       sctx->eop_bug_scratch = si_aligned_buffer_create(
-         &sscreen->b, SI_RESOURCE_FLAG_DRIVER_INTERNAL,
+         &sscreen->b, PIPE_RESOURCE_FLAG_UNMAPPABLE | SI_RESOURCE_FLAG_DRIVER_INTERNAL,
          PIPE_USAGE_DEFAULT, 16 * sscreen->info.max_render_backends, 256);
       if (!sctx->eop_bug_scratch)
          goto fail;
@@ -671,7 +671,8 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, unsign
    if (sctx->gfx_level == GFX7) {
       sctx->null_const_buf.buffer =
          pipe_aligned_buffer_create(screen,
-                                    SI_RESOURCE_FLAG_32BIT | SI_RESOURCE_FLAG_DRIVER_INTERNAL,
+                                    PIPE_RESOURCE_FLAG_UNMAPPABLE | SI_RESOURCE_FLAG_32BIT |
+                                    SI_RESOURCE_FLAG_DRIVER_INTERNAL,
                                     PIPE_USAGE_DEFAULT, 16,
                                     sctx->screen->info.tcc_cache_line_size);
       if (!sctx->null_const_buf.buffer)
@@ -1352,7 +1353,10 @@ static struct pipe_screen *radeonsi_screen_create_impl(struct radeon_winsys *ws,
       unsigned attr_ring_size_per_se = align(1400000, 64 * 1024);
       unsigned attr_ring_size = attr_ring_size_per_se * sscreen->info.max_se;
       assert(attr_ring_size <= 16 * 1024 * 1024); /* maximum size */
-      sscreen->attribute_ring = si_aligned_buffer_create(&sscreen->b, SI_RESOURCE_FLAG_32BIT,
+      sscreen->attribute_ring = si_aligned_buffer_create(&sscreen->b,
+                                                         PIPE_RESOURCE_FLAG_UNMAPPABLE |
+                                                         SI_RESOURCE_FLAG_32BIT |
+                                                         SI_RESOURCE_FLAG_DRIVER_INTERNAL,
                                                          PIPE_USAGE_DEFAULT,
                                                          /* TODO: remove the overallocation */
                                                          attr_ring_size * 16, 2 * 1024 * 1024);
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.cpp b/src/gallium/drivers/radeonsi/si_state_shaders.cpp
index cf320504e69..14152c07e49 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.cpp
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.cpp
@@ -4014,18 +4014,27 @@ void si_init_tess_factor_ring(struct si_context *sctx)
    /* The address must be aligned to 2^19, because the shader only
     * receives the high 13 bits. Align it to 2MB to match the GPU page size.
     */
-   sctx->tess_rings = pipe_aligned_buffer_create(
-      sctx->b.screen, SI_RESOURCE_FLAG_32BIT | SI_RESOURCE_FLAG_DRIVER_INTERNAL, PIPE_USAGE_DEFAULT,
-      sctx->screen->hs.tess_offchip_ring_size + sctx->screen->hs.tess_factor_ring_size, 2 * 1024 * 1024);
+   sctx->tess_rings = pipe_aligned_buffer_create(sctx->b.screen,
+                                                 PIPE_RESOURCE_FLAG_UNMAPPABLE |
+                                                 SI_RESOURCE_FLAG_32BIT |
+                                                 SI_RESOURCE_FLAG_DRIVER_INTERNAL,
+                                                 PIPE_USAGE_DEFAULT,
+                                                 sctx->screen->hs.tess_offchip_ring_size +
+                                                 sctx->screen->hs.tess_factor_ring_size,
+                                                 2 * 1024 * 1024);
    if (!sctx->tess_rings)
       return;
 
    if (sctx->screen->info.has_tmz_support) {
-      sctx->tess_rings_tmz = pipe_aligned_buffer_create(
-         sctx->b.screen,
-         PIPE_RESOURCE_FLAG_ENCRYPTED | SI_RESOURCE_FLAG_32BIT | SI_RESOURCE_FLAG_DRIVER_INTERNAL,
-         PIPE_USAGE_DEFAULT,
-         sctx->screen->hs.tess_offchip_ring_size + sctx->screen->hs.tess_factor_ring_size, 2 * 1024 * 1024);
+      sctx->tess_rings_tmz = pipe_aligned_buffer_create(sctx->b.screen,
+                                                        PIPE_RESOURCE_FLAG_UNMAPPABLE |
+                                                        PIPE_RESOURCE_FLAG_ENCRYPTED |
+                                                        SI_RESOURCE_FLAG_32BIT |
+                                                        SI_RESOURCE_FLAG_DRIVER_INTERNAL,
+                                                        PIPE_USAGE_DEFAULT,
+                                                        sctx->screen->hs.tess_offchip_ring_size +
+                                                        sctx->screen->hs.tess_factor_ring_size,
+                                                        2 * 1024 * 1024);
    }
 
    uint64_t factor_va =



More information about the mesa-commit mailing list