summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/winsys/amdgpu/drm/amdgpu_bo.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
index daf41fcc6a3..90f3a9f35d0 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
@@ -495,8 +495,13 @@ amdgpu_bo_create(struct radeon_winsys *rws,
/* Create a new one. */
bo = amdgpu_create_bo(ws, size, alignment, usage, domain, flags);
- if (!bo)
- return NULL;
+ if (!bo) {
+ /* Clear the cache and try again. */
+ pb_cache_release_all_buffers(&ws->bo_cache);
+ bo = amdgpu_create_bo(ws, size, alignment, usage, domain, flags);
+ if (!bo)
+ return NULL;
+ }
bo->use_reusable_pool = use_reusable_pool;
return &bo->base;