mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
d3d12: Implement resource_get_param
Reviewed-By: Silvio Vilerino <sivileri@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37628>
This commit is contained in:
parent
02aaf360ae
commit
25de079408
1 changed files with 60 additions and 0 deletions
|
|
@ -989,6 +989,65 @@ d3d12_resource_get_info(struct pipe_screen *pscreen,
|
|||
}
|
||||
}
|
||||
|
||||
static bool
|
||||
d3d12_resource_get_param(struct pipe_screen *pscreen,
|
||||
struct pipe_context *context,
|
||||
struct pipe_resource *pres,
|
||||
unsigned plane,
|
||||
unsigned layer,
|
||||
unsigned level,
|
||||
enum pipe_resource_param param,
|
||||
unsigned handle_usage,
|
||||
uint64_t *value)
|
||||
{
|
||||
struct d3d12_resource* res = d3d12_resource(pres);
|
||||
unsigned num_planes = util_format_get_num_planes(res->overall_format);
|
||||
|
||||
pipe_resource *planes[d3d12_max_planes];
|
||||
unsigned int strides[d3d12_max_planes];
|
||||
unsigned int layer_strides[d3d12_max_planes];
|
||||
unsigned int offsets[d3d12_max_planes];
|
||||
unsigned staging_res_size = 0;
|
||||
d3d12_resource_get_planes_info(
|
||||
pres,
|
||||
num_planes,
|
||||
planes,
|
||||
strides,
|
||||
layer_strides,
|
||||
offsets,
|
||||
&staging_res_size
|
||||
);
|
||||
|
||||
switch (param) {
|
||||
case PIPE_RESOURCE_PARAM_NPLANES:
|
||||
*value = num_planes;
|
||||
return true;
|
||||
|
||||
case PIPE_RESOURCE_PARAM_STRIDE:
|
||||
*value = strides[res->plane_slice];
|
||||
return true;
|
||||
|
||||
case PIPE_RESOURCE_PARAM_OFFSET:
|
||||
*value = offsets[res->plane_slice];
|
||||
return true;
|
||||
|
||||
case PIPE_RESOURCE_PARAM_LAYER_STRIDE:
|
||||
*value = layer_strides[res->plane_slice];
|
||||
return true;
|
||||
|
||||
case PIPE_RESOURCE_PARAM_DISJOINT_PLANES:
|
||||
*value = num_planes > 1;
|
||||
return true;
|
||||
|
||||
case PIPE_RESOURCE_PARAM_MODIFIER:
|
||||
case PIPE_RESOURCE_PARAM_HANDLE_TYPE_SHARED:
|
||||
case PIPE_RESOURCE_PARAM_HANDLE_TYPE_KMS:
|
||||
case PIPE_RESOURCE_PARAM_HANDLE_TYPE_FD:
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static struct pipe_memory_object *
|
||||
d3d12_memobj_create_from_handle(struct pipe_screen *pscreen, struct winsys_handle *handle, bool dedicated)
|
||||
{
|
||||
|
|
@ -1107,6 +1166,7 @@ d3d12_screen_resource_init(struct pipe_screen *pscreen)
|
|||
pscreen->resource_get_handle = d3d12_resource_get_handle;
|
||||
pscreen->resource_destroy = d3d12_resource_destroy;
|
||||
pscreen->resource_get_info = d3d12_resource_get_info;
|
||||
pscreen->resource_get_param = d3d12_resource_get_param;
|
||||
|
||||
pscreen->memobj_create_from_handle = d3d12_memobj_create_from_handle;
|
||||
pscreen->memobj_destroy = d3d12_memobj_destroy;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue