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@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8095>
This commit is contained in:
Jesse Natalie 2020-12-14 11:45:16 -08:00 committed by Marge Bot
parent 47125bce8b
commit be19eb771a
2 changed files with 6 additions and 0 deletions

View file

@ -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;

View file

@ -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;