From 96d68cb300d58a340fcfcf416fc7ba722ae7fb62 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Mon, 7 Feb 2022 17:14:33 -0800 Subject: [PATCH] d3d12: Add a buffer busy callback to the bufmgr Not all cached buffers can be mapped, so using map with do-not-wait is a terrible heuristic. Use an explicit buffer busy callback which is always false, since buffers are only put into the cache once they're free. Reviewed-by: Sil Vilerino Part-of: --- src/gallium/drivers/d3d12/d3d12_bufmgr.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp b/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp index 07a0742e15e..91ec2c9eac9 100644 --- a/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp +++ b/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp @@ -320,6 +320,13 @@ d3d12_bufmgr_destroy(struct pb_manager *_mgr) FREE(mgr); } +static boolean +d3d12_bufmgr_is_buffer_busy(struct pb_manager *_mgr, struct pb_buffer *_buf) +{ + /* We're only asked this on buffers that are known not busy */ + return false; +} + struct pb_manager * d3d12_bufmgr_create(struct d3d12_screen *screen) { @@ -332,6 +339,7 @@ d3d12_bufmgr_create(struct d3d12_screen *screen) mgr->base.destroy = d3d12_bufmgr_destroy; mgr->base.create_buffer = d3d12_bufmgr_create_buffer; mgr->base.flush = d3d12_bufmgr_flush; + mgr->base.is_buffer_busy = d3d12_bufmgr_is_buffer_busy; mgr->dev = screen->dev;