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;
|
||||
}
|
||||
|
||||
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
|
||||
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_get_info = llvmpipe_get_resource_info;
|
||||
screen->resource_get_param = llvmpipe_resource_get_param;
|
||||
screen->allocate_memory = llvmpipe_allocate_memory;
|
||||
screen->free_memory = llvmpipe_free_memory;
|
||||
screen->map_memory = llvmpipe_map_memory;
|
||||
|
|
Loading…
Reference in New Issue