freedreno/drm: readonly cmdstream
authorRob Clark <robdclark@chromium.org>
Fri, 31 Jan 2020 21:01:52 +0000 (13:01 -0800)
committerRob Clark <robdclark@chromium.org>
Fri, 31 Jan 2020 21:01:52 +0000 (13:01 -0800)
Noticed that we weren't consistently making cmdstream buffers
gpu-readonly.  Fix that and drop the need to pass flags to
fd_bo_new_ring().

Signed-off-by: Rob Clark <robdclark@chromium.org>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3663>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3663>

src/freedreno/drm/freedreno_bo.c
src/freedreno/drm/freedreno_priv.h
src/freedreno/drm/msm_ringbuffer.c
src/freedreno/drm/msm_ringbuffer_sp.c

index 7449160f1371ea8f890124290af518b60875ded4..6d51023acac735755bcf9357bf5564f62199d0fe 100644 (file)
@@ -125,8 +125,9 @@ _fd_bo_set_name(struct fd_bo *bo, const char *fmt, va_list ap)
  * to re-use cmdstream bo's for cmdstream and not unrelated purposes.
  */
 struct fd_bo *
-fd_bo_new_ring(struct fd_device *dev, uint32_t size, uint32_t flags)
+fd_bo_new_ring(struct fd_device *dev, uint32_t size)
 {
+       uint32_t flags = DRM_FREEDRENO_GEM_GPUREADONLY;
        struct fd_bo *bo = bo_new(dev, size, flags, &dev->ring_cache);
        if (bo)
                bo->bo_reuse = RING_CACHE;
index 349a2296472c7fed4b829453aa50f82746d59bf0..36cb8fb6044d617e74ca1ba4f93c8483971172d2 100644 (file)
@@ -178,8 +178,7 @@ struct fd_bo {
        time_t free_time;        /* time when added to bucket-list */
 };
 
-struct fd_bo *fd_bo_new_ring(struct fd_device *dev,
-               uint32_t size, uint32_t flags);
+struct fd_bo *fd_bo_new_ring(struct fd_device *dev, uint32_t size);
 
 #define enable_debug 0  /* TODO make dynamic */
 
index 3ce36ad142acc8c9dfa14e8c5fca6fc9f4d49b04..5e033b3d6ac16646edba792d79e24015293878ea 100644 (file)
@@ -218,8 +218,7 @@ msm_submit_suballoc_ring_bo(struct fd_submit *submit,
 
        if (!suballoc_bo) {
                // TODO possibly larger size for streaming bo?
-               msm_ring->ring_bo = fd_bo_new_ring(
-                               submit->pipe->dev, 0x8000, 0);
+               msm_ring->ring_bo = fd_bo_new_ring(submit->pipe->dev, 0x8000);
                msm_ring->offset = 0;
        } else {
                msm_ring->ring_bo = fd_bo_ref(suballoc_bo);
@@ -257,7 +256,7 @@ msm_submit_new_ringbuffer(struct fd_submit *submit, uint32_t size,
                        size = INIT_SIZE;
 
                msm_ring->offset = 0;
-               msm_ring->ring_bo = fd_bo_new_ring(submit->pipe->dev, size, 0);
+               msm_ring->ring_bo = fd_bo_new_ring(submit->pipe->dev, size);
        }
 
        if (!msm_ringbuffer_init(msm_ring, size, flags))
@@ -503,7 +502,7 @@ msm_ringbuffer_grow(struct fd_ringbuffer *ring, uint32_t size)
        finalize_current_cmd(ring);
 
        fd_bo_del(msm_ring->ring_bo);
-       msm_ring->ring_bo = fd_bo_new_ring(pipe->dev, size, 0);
+       msm_ring->ring_bo = fd_bo_new_ring(pipe->dev, size);
        msm_ring->cmd = cmd_new(msm_ring->ring_bo);
 
        ring->start = fd_bo_map(msm_ring->ring_bo);
@@ -711,7 +710,7 @@ msm_ringbuffer_new_object(struct fd_pipe *pipe, uint32_t size)
 
        msm_ring->u.pipe = pipe;
        msm_ring->offset = 0;
-       msm_ring->ring_bo = fd_bo_new_ring(pipe->dev, size, 0);
+       msm_ring->ring_bo = fd_bo_new_ring(pipe->dev, size);
        msm_ring->base.refcnt = 1;
 
        msm_ring->u.reloc_bos = NULL;
index 41732858580d1a6d7446991ce980f94429d4e27c..d8915707c7959f174a78bb867cbc28810256baaa 100644 (file)
@@ -187,8 +187,7 @@ msm_submit_suballoc_ring_bo(struct fd_submit *submit,
 
        if (!suballoc_bo) {
                // TODO possibly larger size for streaming bo?
-               msm_ring->ring_bo = fd_bo_new_ring(submit->pipe->dev,
-                               0x8000, DRM_FREEDRENO_GEM_GPUREADONLY);
+               msm_ring->ring_bo = fd_bo_new_ring(submit->pipe->dev, 0x8000);
                msm_ring->offset = 0;
        } else {
                msm_ring->ring_bo = fd_bo_ref(suballoc_bo);
@@ -226,8 +225,7 @@ msm_submit_sp_new_ringbuffer(struct fd_submit *submit, uint32_t size,
                        size = INIT_SIZE;
 
                msm_ring->offset = 0;
-               msm_ring->ring_bo = fd_bo_new_ring(submit->pipe->dev, size,
-                               DRM_FREEDRENO_GEM_GPUREADONLY);
+               msm_ring->ring_bo = fd_bo_new_ring(submit->pipe->dev, size);
        }
 
        if (!msm_ringbuffer_sp_init(msm_ring, size, flags))
@@ -388,8 +386,7 @@ msm_ringbuffer_sp_grow(struct fd_ringbuffer *ring, uint32_t size)
        finalize_current_cmd(ring);
 
        fd_bo_del(msm_ring->ring_bo);
-       msm_ring->ring_bo = fd_bo_new_ring(pipe->dev, size,
-                       DRM_FREEDRENO_GEM_GPUREADONLY);
+       msm_ring->ring_bo = fd_bo_new_ring(pipe->dev, size);
 
        ring->start = fd_bo_map(msm_ring->ring_bo);
        ring->end = &(ring->start[size/4]);
@@ -568,8 +565,7 @@ msm_ringbuffer_sp_new_object(struct fd_pipe *pipe, uint32_t size)
 
        msm_ring->u.pipe = pipe;
        msm_ring->offset = 0;
-       msm_ring->ring_bo = fd_bo_new_ring(pipe->dev, size,
-                       DRM_FREEDRENO_GEM_GPUREADONLY);
+       msm_ring->ring_bo = fd_bo_new_ring(pipe->dev, size);
        msm_ring->base.refcnt = 1;
 
        return msm_ringbuffer_sp_init(msm_ring, size, _FD_RINGBUFFER_OBJECT);