freedreno/drm: Avoid CPU_PREP ioctl if bo is idle
With userspace fences, if we know definitely that the buffer is idle (which implies that it is not shared with other processes, etc), then skip the ioctl. Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14900>
This commit is contained in:
@@ -503,14 +503,14 @@ fd_bo_upload(struct fd_bo *bo, void *src, unsigned len)
|
||||
int
|
||||
fd_bo_cpu_prep(struct fd_bo *bo, struct fd_pipe *pipe, uint32_t op)
|
||||
{
|
||||
simple_mtx_lock(&table_lock);
|
||||
enum fd_bo_state state = fd_bo_state(bo);
|
||||
simple_mtx_unlock(&table_lock);
|
||||
|
||||
if (state == FD_BO_STATE_IDLE)
|
||||
return 0;
|
||||
|
||||
if (op & (FD_BO_PREP_NOSYNC | FD_BO_PREP_FLUSH)) {
|
||||
simple_mtx_lock(&table_lock);
|
||||
enum fd_bo_state state = fd_bo_state(bo);
|
||||
simple_mtx_unlock(&table_lock);
|
||||
|
||||
if (state == FD_BO_STATE_IDLE)
|
||||
return 0;
|
||||
|
||||
if (op & FD_BO_PREP_FLUSH)
|
||||
bo_flush(bo);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user