summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Natalie <jenatali@microsoft.com>2022-02-07 17:14:33 -0800
committerMarge Bot <emma+marge@anholt.net>2022-02-08 20:36:29 +0000
commit96d68cb300d58a340fcfcf416fc7ba722ae7fb62 (patch)
treeb13928845203342dc3bd77ff8ee2ae6de86224bc
parent9d6febad5d4b75fddff52c9cf60a1c8f431fdf14 (diff)
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 <sivileri@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14933>
-rw-r--r--src/gallium/drivers/d3d12/d3d12_bufmgr.cpp8
1 files changed, 8 insertions, 0 deletions
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;