d3d12: Default newly-created resources to not-resident
Reviewed-by: Bill Kristiansen <billkris@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14959>
This commit is contained in:
parent
e3a2cb4b67
commit
22fc534930
|
@ -122,9 +122,14 @@ d3d12_bo_new(struct d3d12_screen *screen, uint64_t size, const pb_desc *pb_desc)
|
|||
else if (pb_desc->usage & PB_USAGE_CPU_WRITE)
|
||||
heap_type = D3D12_HEAP_TYPE_UPLOAD;
|
||||
|
||||
D3D12_HEAP_FLAGS heap_flags = screen->support_create_not_resident ?
|
||||
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT : D3D12_HEAP_FLAG_NONE;
|
||||
enum d3d12_residency_status init_residency = screen->support_create_not_resident ?
|
||||
d3d12_evicted : d3d12_resident;
|
||||
|
||||
D3D12_HEAP_PROPERTIES heap_pris = dev->GetCustomHeapProperties(0, heap_type);
|
||||
HRESULT hres = dev->CreateCommittedResource(&heap_pris,
|
||||
D3D12_HEAP_FLAG_NONE,
|
||||
heap_flags,
|
||||
&res_desc,
|
||||
D3D12_RESOURCE_STATE_COMMON,
|
||||
NULL,
|
||||
|
@ -133,7 +138,7 @@ d3d12_bo_new(struct d3d12_screen *screen, uint64_t size, const pb_desc *pb_desc)
|
|||
if (FAILED(hres))
|
||||
return NULL;
|
||||
|
||||
return d3d12_bo_wrap_res(screen, res, PIPE_FORMAT_NONE, d3d12_resident);
|
||||
return d3d12_bo_wrap_res(screen, res, PIPE_FORMAT_NONE, init_residency);
|
||||
}
|
||||
|
||||
struct d3d12_bo *
|
||||
|
|
|
@ -249,8 +249,13 @@ init_texture(struct d3d12_screen *screen,
|
|||
|
||||
D3D12_HEAP_PROPERTIES heap_pris = screen->dev->GetCustomHeapProperties(0, D3D12_HEAP_TYPE_DEFAULT);
|
||||
|
||||
D3D12_HEAP_FLAGS heap_flags = screen->support_create_not_resident ?
|
||||
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT : D3D12_HEAP_FLAG_NONE;
|
||||
enum d3d12_residency_status init_residency = screen->support_create_not_resident ?
|
||||
d3d12_evicted : d3d12_resident;
|
||||
|
||||
HRESULT hres = screen->dev->CreateCommittedResource(&heap_pris,
|
||||
D3D12_HEAP_FLAG_NONE,
|
||||
heap_flags,
|
||||
&desc,
|
||||
D3D12_RESOURCE_STATE_COMMON,
|
||||
NULL,
|
||||
|
@ -269,7 +274,7 @@ init_texture(struct d3d12_screen *screen,
|
|||
&res->dt_stride);
|
||||
}
|
||||
|
||||
res->bo = d3d12_bo_wrap_res(screen, d3d12_res, templ->format, d3d12_resident);
|
||||
res->bo = d3d12_bo_wrap_res(screen, d3d12_res, templ->format, init_residency);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1233,6 +1233,11 @@ d3d12_init_screen(struct d3d12_screen *screen, struct sw_winsys *winsys, IUnknow
|
|||
|
||||
screen->have_load_at_vertex = can_attribute_at_vertex(screen);
|
||||
screen->support_shader_images = can_shader_image_load_all_formats(screen);
|
||||
ID3D12Device8 *dev8;
|
||||
if (SUCCEEDED(screen->dev->QueryInterface(&dev8))) {
|
||||
dev8->Release();
|
||||
screen->support_create_not_resident = true;
|
||||
}
|
||||
|
||||
screen->nir_options = *dxil_get_nir_compiler_options();
|
||||
|
||||
|
|
|
@ -112,6 +112,7 @@ struct d3d12_screen {
|
|||
double timestamp_multiplier;
|
||||
bool have_load_at_vertex;
|
||||
bool support_shader_images;
|
||||
bool support_create_not_resident;
|
||||
};
|
||||
|
||||
static inline struct d3d12_screen *
|
||||
|
|
Loading…
Reference in New Issue