d3d12: Treat depth/stencil as planar for plane count helper
Reviewed-by: Bill Kristiansen <billkris@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17688>
This commit is contained in:
parent
6bc5df76d3
commit
f972a57b0b
|
@ -53,7 +53,7 @@ d3d12_bufmgr(struct pb_manager *mgr)
|
|||
}
|
||||
|
||||
static struct TransitionableResourceState *
|
||||
create_trans_state(ID3D12Resource *res, enum pipe_format format)
|
||||
create_trans_state(ID3D12Resource *res)
|
||||
{
|
||||
D3D12_RESOURCE_DESC desc = GetDesc(res);
|
||||
|
||||
|
@ -63,8 +63,6 @@ create_trans_state(ID3D12Resource *res, enum pipe_format format)
|
|||
unsigned total_subresources = desc.MipLevels *
|
||||
arraySize *
|
||||
d3d12_non_opaque_plane_count(desc.Format);
|
||||
total_subresources *= util_format_has_stencil(util_format_description(format)) ?
|
||||
2 : 1;
|
||||
|
||||
return new TransitionableResourceState(res,
|
||||
total_subresources,
|
||||
|
@ -98,7 +96,7 @@ d3d12_debug_describe_bo(char *buf, struct d3d12_bo *ptr)
|
|||
}
|
||||
|
||||
struct d3d12_bo *
|
||||
d3d12_bo_wrap_res(struct d3d12_screen *screen, ID3D12Resource *res, enum pipe_format format, enum d3d12_residency_status residency)
|
||||
d3d12_bo_wrap_res(struct d3d12_screen *screen, ID3D12Resource *res, enum d3d12_residency_status residency)
|
||||
{
|
||||
struct d3d12_bo *bo;
|
||||
|
||||
|
@ -109,7 +107,7 @@ d3d12_bo_wrap_res(struct d3d12_screen *screen, ID3D12Resource *res, enum pipe_fo
|
|||
pipe_reference_init(&bo->reference, 1);
|
||||
bo->screen = screen;
|
||||
bo->res = res;
|
||||
bo->trans_state = create_trans_state(res, format);
|
||||
bo->trans_state = create_trans_state(res);
|
||||
bo->unique_id = p_atomic_inc_return(&screen->resource_id_generator);
|
||||
|
||||
bo->residency_status = residency;
|
||||
|
@ -166,7 +164,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, init_residency);
|
||||
return d3d12_bo_wrap_res(screen, res, init_residency);
|
||||
}
|
||||
|
||||
struct d3d12_bo *
|
||||
|
|
|
@ -115,7 +115,7 @@ struct d3d12_bo *
|
|||
d3d12_bo_new(struct d3d12_screen *screen, uint64_t size, uint64_t alignment);
|
||||
|
||||
struct d3d12_bo *
|
||||
d3d12_bo_wrap_res(struct d3d12_screen *screen, ID3D12Resource *res, enum pipe_format format, enum d3d12_residency_status residency);
|
||||
d3d12_bo_wrap_res(struct d3d12_screen *screen, ID3D12Resource *res, enum d3d12_residency_status residency);
|
||||
|
||||
struct d3d12_bo *
|
||||
d3d12_bo_wrap_buffer(struct d3d12_screen *screen, struct pb_buffer *buf);
|
||||
|
|
|
@ -426,6 +426,16 @@ d3d12_non_opaque_plane_count(DXGI_FORMAT format)
|
|||
case DXGI_FORMAT_NV11:
|
||||
return 2;
|
||||
|
||||
case DXGI_FORMAT_R24G8_TYPELESS:
|
||||
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
||||
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
|
||||
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
||||
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
||||
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
||||
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
|
||||
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
|
||||
return 2;
|
||||
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -293,7 +293,7 @@ init_texture(struct d3d12_screen *screen,
|
|||
&res->dt_stride);
|
||||
}
|
||||
|
||||
res->bo = d3d12_bo_wrap_res(screen, d3d12_res, templ->format, init_residency);
|
||||
res->bo = d3d12_bo_wrap_res(screen, d3d12_res, init_residency);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -621,7 +621,7 @@ d3d12_resource_from_handle(struct pipe_screen *pscreen,
|
|||
res->first_plane = &res->base.b;
|
||||
|
||||
if (!res->bo) {
|
||||
res->bo = d3d12_bo_wrap_res(screen, d3d12_res, res->overall_format, d3d12_permanently_resident);
|
||||
res->bo = d3d12_bo_wrap_res(screen, d3d12_res, d3d12_permanently_resident);
|
||||
}
|
||||
init_valid_range(res);
|
||||
|
||||
|
|
Loading…
Reference in New Issue