From: Robert Mader Date: Sun, 19 Nov 2023 21:14:16 +0000 (+0100) Subject: v3d/resource: Support offset query for multi-planar planes X-Git-Tag: upstream/23.3.3~177 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b52742c0189dd8f5db2052ec9b974ac7bac7b9c1;p=platform%2Fupstream%2Fmesa.git v3d/resource: Support offset query for multi-planar planes This is required in order to return the correct value for `gbm_dri_bo_get_offset()` for e.g. the second plane of a NV12 image. Use the newly introduced `util_resource` helper and, while on it, also add support for `gbm_bo_get_plane_count()`. Cc: mesa-stable Reviewed-by: Juan A. Suarez Part-of: (cherry picked from commit 2404483706f4396920e94f7abc80368b7d25a965) --- diff --git a/.pick_status.json b/.pick_status.json index e65b073..d574fd6 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -124,7 +124,7 @@ "description": "v3d/resource: Support offset query for multi-planar planes", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/v3d/v3d_resource.c b/src/gallium/drivers/v3d/v3d_resource.c index d4cccdb..7eec001 100644 --- a/src/gallium/drivers/v3d/v3d_resource.c +++ b/src/gallium/drivers/v3d/v3d_resource.c @@ -26,6 +26,7 @@ #include "util/u_memory.h" #include "util/format/u_format.h" #include "util/u_inlines.h" +#include "util/u_resource.h" #include "util/u_surface.h" #include "util/u_transfer_helper.h" #include "util/u_upload_mgr.h" @@ -473,18 +474,22 @@ v3d_resource_get_param(struct pipe_screen *pscreen, enum pipe_resource_param param, unsigned usage, uint64_t *value) { - struct v3d_resource *rsc = v3d_resource(prsc); + struct v3d_resource *rsc = + (struct v3d_resource *)util_resource_at_index(prsc, plane); switch (param) { case PIPE_RESOURCE_PARAM_STRIDE: *value = rsc->slices[level].stride; return true; case PIPE_RESOURCE_PARAM_OFFSET: - *value = 0; + *value = rsc->slices[level].offset; return true; case PIPE_RESOURCE_PARAM_MODIFIER: *value = v3d_resource_modifier(rsc); return true; + case PIPE_RESOURCE_PARAM_NPLANES: + *value = util_resource_num(prsc); + return true; default: return false; }