mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
winsys/radeon: remove broken bo-is-busy-for-write guessing
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
c79e9f0ed5
commit
296b899095
3 changed files with 0 additions and 31 deletions
|
|
@ -99,8 +99,6 @@ static void radeon_bo_wait(struct pb_buffer *_buf)
|
|||
args.handle = bo->handle;
|
||||
while (drmCommandWriteRead(bo->rws->fd, DRM_RADEON_GEM_WAIT_IDLE,
|
||||
&args, sizeof(args)) == -EBUSY);
|
||||
|
||||
bo->busy_for_write = FALSE;
|
||||
}
|
||||
|
||||
static boolean radeon_bo_is_busy(struct pb_buffer *_buf)
|
||||
|
|
@ -117,8 +115,6 @@ static boolean radeon_bo_is_busy(struct pb_buffer *_buf)
|
|||
busy = drmCommandWriteRead(bo->rws->fd, DRM_RADEON_GEM_BUSY,
|
||||
&args, sizeof(args)) != 0;
|
||||
|
||||
if (!busy)
|
||||
bo->busy_for_write = FALSE;
|
||||
return busy;
|
||||
}
|
||||
|
||||
|
|
@ -196,21 +192,6 @@ static void *radeon_bo_map_internal(struct pb_buffer *_buf,
|
|||
/* XXX We could check whether the buffer is busy for write here. */
|
||||
radeon_bo_wait((struct pb_buffer*)bo);
|
||||
}
|
||||
#if 0
|
||||
/* XXX This per-winsys busy-for-write tracking sucks.
|
||||
* What if some other process wrote something, e.g. using
|
||||
* DRI2CopyRegion? We wouldn't get the busy_for_write flag
|
||||
* set, skipping bo_wait.
|
||||
* We need to move the is-busy-for-write query into the kernel.
|
||||
*/
|
||||
} else if (bo->busy_for_write) {
|
||||
/* Update the busy_for_write field (done by radeon_bo_is_busy)
|
||||
* and wait if needed. */
|
||||
if (radeon_bo_is_busy((struct pb_buffer*)bo)) {
|
||||
radeon_bo_wait((struct pb_buffer*)bo);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
/* Mapping for write. */
|
||||
if (radeon_bo_is_referenced_by_cs(cs, bo)) {
|
||||
|
|
|
|||
|
|
@ -60,13 +60,6 @@ struct radeon_bo {
|
|||
* thread, is this bo referenced in? */
|
||||
int num_active_ioctls;
|
||||
|
||||
/* Whether the buffer has been relocated for write and is busy since then.
|
||||
* This field is updated in:
|
||||
* - radeon_drm_cs_flush (to TRUE if it's relocated for write)
|
||||
* - radeon_bo_is_busy (to FALSE if it's not busy)
|
||||
* - radeon_bo_wait (to FALSE) */
|
||||
boolean busy_for_write;
|
||||
|
||||
boolean flinked;
|
||||
uint32_t flink;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -411,11 +411,6 @@ static void radeon_drm_cs_flush(struct radeon_winsys_cs *rcs, unsigned flags)
|
|||
for (i = 0; i < crelocs; i++) {
|
||||
/* Update the number of active asynchronous CS ioctls for the buffer. */
|
||||
p_atomic_inc(&cs->csc->relocs_bo[i]->num_active_ioctls);
|
||||
|
||||
/* Update whether the buffer is busy for write. */
|
||||
if (cs->csc->relocs[i].write_domain) {
|
||||
cs->csc->relocs_bo[i]->busy_for_write = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (cs->ws->num_cpus > 1 && debug_get_option_thread() &&
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue