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 <jasuarez@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26283>
This commit is contained in:
@@ -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"
|
||||
@@ -474,18 +475,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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user