diff --git a/.pick_status.json b/.pick_status.json index b304e00ff46..a1f62793d3e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2914,7 +2914,7 @@ "description": "winsys/amdgpu: fix running out of 32bit address space with high FPS", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "4d486888ee895ee510fd0d0e77518c7c020482b9", "notes": null diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h index 439b3b95ffd..82607b34246 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h @@ -123,8 +123,11 @@ struct amdgpu_screen_winsys { * uint8_t wraps around so quickly that some BOs might never become idle because we don't * remove idle fences from BOs, so they become "busy" again after a queue sequence number wraps * around and they may stay "busy" in pb_cache long enough that we run out of memory. + * + * High FPS applications also wrap around uint16_t so quickly that 32-bit address space allocations + * aren't deallocated soon enough and we run out. */ -typedef uint16_t uint_seq_no; +typedef uint32_t uint_seq_no; struct amdgpu_queue { /* Ring buffer of fences.