d3d12: Actually suballocate and cache buffers

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14933>
This commit is contained in:
Jesse Natalie
2022-02-07 14:13:20 -08:00
committed by Marge Bot
parent d0f4f8efae
commit 9d6febad5d
3 changed files with 7 additions and 5 deletions

View File

@@ -95,7 +95,7 @@ d3d12_bo_new(ID3D12Device *dev, uint64_t size, const pb_desc *pb_desc)
D3D12_RESOURCE_DESC res_desc; D3D12_RESOURCE_DESC res_desc;
res_desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER; res_desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
res_desc.Format = DXGI_FORMAT_UNKNOWN; res_desc.Format = DXGI_FORMAT_UNKNOWN;
res_desc.Alignment = pb_desc->alignment; res_desc.Alignment = 0;
res_desc.Width = size; res_desc.Width = size;
res_desc.Height = 1; res_desc.Height = 1;
res_desc.DepthOrArraySize = 1; res_desc.DepthOrArraySize = 1;

View File

@@ -155,7 +155,7 @@ init_buffer(struct d3d12_screen *screen,
if (templ->bind & PIPE_BIND_SAMPLER_VIEW) if (templ->bind & PIPE_BIND_SAMPLER_VIEW)
bufmgr = screen->cache_bufmgr; bufmgr = screen->cache_bufmgr;
buf_desc.alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT; buf_desc.alignment = D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT;
res->dxgi_format = DXGI_FORMAT_UNKNOWN; res->dxgi_format = DXGI_FORMAT_UNKNOWN;
buf = bufmgr->create_buffer(bufmgr, templ->width0, &buf_desc); buf = bufmgr->create_buffer(bufmgr, templ->width0, &buf_desc);
if (!buf) if (!buf)

View File

@@ -1198,12 +1198,14 @@ d3d12_init_screen(struct d3d12_screen *screen, struct sw_winsys *winsys, IUnknow
desc.usage = (pb_usage_flags)(PB_USAGE_CPU_WRITE | PB_USAGE_GPU_READ); desc.usage = (pb_usage_flags)(PB_USAGE_CPU_WRITE | PB_USAGE_GPU_READ);
screen->bufmgr = d3d12_bufmgr_create(screen); screen->bufmgr = d3d12_bufmgr_create(screen);
screen->cache_bufmgr = pb_cache_manager_create(screen->bufmgr, 0xfffff, 2, 0, 64 * 1024 * 1024); screen->cache_bufmgr = pb_cache_manager_create(screen->bufmgr, 0xfffff, 2, 0, 512 * 1024 * 1024);
screen->slab_bufmgr = pb_slab_range_manager_create(screen->cache_bufmgr, 16, 512, screen->slab_bufmgr = pb_slab_range_manager_create(screen->cache_bufmgr, 16,
D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT,
D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT, D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT,
&desc); &desc);
desc.usage = (pb_usage_flags)(PB_USAGE_CPU_READ_WRITE | PB_USAGE_GPU_WRITE); 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, screen->readback_slab_bufmgr = pb_slab_range_manager_create(screen->cache_bufmgr, 16,
D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT,
D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT, D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT,
&desc); &desc);