mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 02:20:11 +01:00
zink: fix PIPE_RESOURCE_PARAM_NPLANES with format modifier
Some format modifiers change the number of planes used by an image.
For instance AMD DCC modifiers uses 2 or 3 planes. However the
format modifier was ignored in the PIPE_RESOURCE_PARAM_NPLANES
get_param hook.
Fix this by using get_dmabuf_modifier_planes() instead of
util_format_get_num_planes().
This fixes wlroots-based compositors under zink.
Signed-off-by: Simon Ser <contact@emersion.fr>
Fixes: c025cb9ee9 ("zink: fix dmabuf plane returns")
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20395>
This commit is contained in:
parent
b3f517b988
commit
2e2775c11b
2 changed files with 1 additions and 3 deletions
|
|
@ -1363,7 +1363,7 @@ zink_resource_get_param(struct pipe_screen *pscreen, struct pipe_context *pctx,
|
|||
switch (param) {
|
||||
case PIPE_RESOURCE_PARAM_NPLANES:
|
||||
if (screen->info.have_EXT_image_drm_format_modifier)
|
||||
*value = util_format_get_num_planes(res->drm_format);
|
||||
*value = screen->base.get_dmabuf_modifier_planes(&screen->base, obj->modifier, res->internal_format);
|
||||
else
|
||||
*value = 1;
|
||||
break;
|
||||
|
|
@ -1549,7 +1549,6 @@ zink_resource_from_handle(struct pipe_screen *pscreen,
|
|||
struct pipe_resource *pres = resource_create(pscreen, &templ2, whandle, usage, &modifier, modifier_count, NULL);
|
||||
if (pres) {
|
||||
struct zink_resource *res = zink_resource(pres);
|
||||
res->drm_format = whandle->format;
|
||||
if (pres->target != PIPE_BUFFER)
|
||||
res->valid = true;
|
||||
else
|
||||
|
|
|
|||
|
|
@ -1182,7 +1182,6 @@ struct zink_resource {
|
|||
|
||||
uint8_t modifiers_count;
|
||||
uint64_t *modifiers;
|
||||
enum pipe_format drm_format;
|
||||
};
|
||||
|
||||
static inline struct zink_resource *
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue