Module: Mesa Branch: master Commit: 2dcc9c7f54edbff075665ebe5d50f2499dc12163 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2dcc9c7f54edbff075665ebe5d50f2499dc12163
Author: Dave Airlie <[email protected]> Date: Tue Sep 8 09:01:45 2020 +1000 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 <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6639> --- src/gallium/drivers/llvmpipe/lp_texture.c | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/gallium/drivers/llvmpipe/lp_texture.c b/src/gallium/drivers/llvmpipe/lp_texture.c index bb7e3ed34f3..2bf223d66f9 100644 --- a/src/gallium/drivers/llvmpipe/lp_texture.c +++ b/src/gallium/drivers/llvmpipe/lp_texture.c @@ -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; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
