freedreno/drm: readonly cmdstream
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>
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user