llvmpipe: add resource get param support.
This implements this resource get param callback and uses it to return image information for lavapipe. Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6639>
This commit is contained in:
parent
ae17e1fdbc
commit
2dcc9c7f54
|
@ -896,6 +896,44 @@ llvmpipe_get_resource_info(struct pipe_screen *screen,
|
||||||
*offset = 0;
|
*offset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
llvmpipe_resource_get_param(struct pipe_screen *screen,
|
||||||
|
struct pipe_context *context,
|
||||||
|
struct pipe_resource *resource,
|
||||||
|
unsigned plane,
|
||||||
|
unsigned layer,
|
||||||
|
unsigned level,
|
||||||
|
enum pipe_resource_param param,
|
||||||
|
unsigned handle_usage,
|
||||||
|
uint64_t *value)
|
||||||
|
{
|
||||||
|
struct llvmpipe_resource *lpr = llvmpipe_resource(resource);
|
||||||
|
|
||||||
|
switch (param) {
|
||||||
|
case PIPE_RESOURCE_PARAM_NPLANES:
|
||||||
|
*value = 1;
|
||||||
|
return true;
|
||||||
|
case PIPE_RESOURCE_PARAM_STRIDE:
|
||||||
|
*value = lpr->row_stride[level];
|
||||||
|
return true;
|
||||||
|
case PIPE_RESOURCE_PARAM_OFFSET:
|
||||||
|
*value = lpr->mip_offsets[level] + (lpr->img_stride[level] * layer);
|
||||||
|
return true;
|
||||||
|
case PIPE_RESOURCE_PARAM_LAYER_STRIDE:
|
||||||
|
*value = lpr->img_stride[level];
|
||||||
|
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:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
assert(0);
|
||||||
|
*value = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
llvmpipe_init_screen_resource_funcs(struct pipe_screen *screen)
|
llvmpipe_init_screen_resource_funcs(struct pipe_screen *screen)
|
||||||
{
|
{
|
||||||
|
@ -921,6 +959,7 @@ llvmpipe_init_screen_resource_funcs(struct pipe_screen *screen)
|
||||||
screen->resource_create_unbacked = llvmpipe_resource_create_unbacked;
|
screen->resource_create_unbacked = llvmpipe_resource_create_unbacked;
|
||||||
|
|
||||||
screen->resource_get_info = llvmpipe_get_resource_info;
|
screen->resource_get_info = llvmpipe_get_resource_info;
|
||||||
|
screen->resource_get_param = llvmpipe_resource_get_param;
|
||||||
screen->allocate_memory = llvmpipe_allocate_memory;
|
screen->allocate_memory = llvmpipe_allocate_memory;
|
||||||
screen->free_memory = llvmpipe_free_memory;
|
screen->free_memory = llvmpipe_free_memory;
|
||||||
screen->map_memory = llvmpipe_map_memory;
|
screen->map_memory = llvmpipe_map_memory;
|
||||||
|
|
Loading…
Reference in New Issue