Mesa (master): d3d12: Add a slab bufmgr for readback buffers
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jan 5 23:03:11 UTC 2021
Module: Mesa
Branch: master
Commit: be19eb771acd77843bf463a12d37510ca0070ce3
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=be19eb771acd77843bf463a12d37510ca0070ce3
Author: Jesse Natalie <jenatali at microsoft.com>
Date: Mon Dec 14 11:45:16 2020 -0800
d3d12: Add a slab bufmgr for readback buffers
Readback (GPU write, CPU read) should use different CPU page
properties compared to upload (write-back vs write-combined).
A future commit will start to respect these PB usage flags.
Reviewed-by: Louis-Francis Ratté-Boulianne <lfrb at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8095>
---
src/gallium/drivers/d3d12/d3d12_screen.cpp | 5 +++++
src/gallium/drivers/d3d12/d3d12_screen.h | 1 +
2 files changed, 6 insertions(+)
diff --git a/src/gallium/drivers/d3d12/d3d12_screen.cpp b/src/gallium/drivers/d3d12/d3d12_screen.cpp
index b3bd1f40be0..0cb388277e2 100644
--- a/src/gallium/drivers/d3d12/d3d12_screen.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_screen.cpp
@@ -603,6 +603,7 @@ d3d12_destroy_screen(struct pipe_screen *pscreen)
{
struct d3d12_screen *screen = d3d12_screen(pscreen);
slab_destroy_parent(&screen->transfer_pool);
+ screen->readback_slab_bufmgr->destroy(screen->readback_slab_bufmgr);
screen->slab_bufmgr->destroy(screen->slab_bufmgr);
screen->cache_bufmgr->destroy(screen->cache_bufmgr);
screen->bufmgr->destroy(screen->bufmgr);
@@ -869,6 +870,10 @@ d3d12_init_screen(struct d3d12_screen *screen, struct sw_winsys *winsys, IUnknow
screen->slab_bufmgr = pb_slab_range_manager_create(screen->cache_bufmgr, 16, 512,
D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT,
&desc);
+ desc.usage = (pb_usage_flags)(PB_USAGE_CPU_READ_WRITE | PB_USAGE_GPU_WRITE);
+ screen->readback_slab_bufmgr = pb_slab_range_manager_create(screen->cache_bufmgr, 16, 512,
+ D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT,
+ &desc);
screen->have_load_at_vertex = can_attribute_at_vertex(screen);
return true;
diff --git a/src/gallium/drivers/d3d12/d3d12_screen.h b/src/gallium/drivers/d3d12/d3d12_screen.h
index 75555211b99..347a6c5ce5d 100644
--- a/src/gallium/drivers/d3d12/d3d12_screen.h
+++ b/src/gallium/drivers/d3d12/d3d12_screen.h
@@ -48,6 +48,7 @@ struct d3d12_screen {
struct pb_manager *bufmgr;
struct pb_manager *cache_bufmgr;
struct pb_manager *slab_bufmgr;
+ struct pb_manager *readback_slab_bufmgr;
/* capabilities */
D3D_FEATURE_LEVEL max_feature_level;
More information about the mesa-commit
mailing list