Commit a8d6e127 authored by Thomas Zimmermann's avatar Thomas Zimmermann

drm/gem-vram: Ignore planes that are unused by framebuffer format

Only handle color planes that exist in a framebuffer's color format.
Ignore non-existing planes.
Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
Tested-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Acked-by: default avatarChristian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220517113327.26919-5-tzimmermann@suse.de
parent 1c89b4b7
...@@ -667,17 +667,22 @@ int ...@@ -667,17 +667,22 @@ int
drm_gem_vram_plane_helper_prepare_fb(struct drm_plane *plane, drm_gem_vram_plane_helper_prepare_fb(struct drm_plane *plane,
struct drm_plane_state *new_state) struct drm_plane_state *new_state)
{ {
size_t i; struct drm_framebuffer *fb = new_state->fb;
struct drm_gem_vram_object *gbo; struct drm_gem_vram_object *gbo;
struct drm_gem_object *obj;
unsigned int i;
int ret; int ret;
if (!new_state->fb) if (!fb)
return 0; return 0;
for (i = 0; i < ARRAY_SIZE(new_state->fb->obj); ++i) { for (i = 0; i < fb->format->num_planes; ++i) {
if (!new_state->fb->obj[i]) obj = drm_gem_fb_get_obj(fb, i);
continue; if (!obj) {
gbo = drm_gem_vram_of_gem(new_state->fb->obj[i]); ret = -EINVAL;
goto err_drm_gem_vram_unpin;
}
gbo = drm_gem_vram_of_gem(obj);
ret = drm_gem_vram_pin(gbo, DRM_GEM_VRAM_PL_FLAG_VRAM); ret = drm_gem_vram_pin(gbo, DRM_GEM_VRAM_PL_FLAG_VRAM);
if (ret) if (ret)
goto err_drm_gem_vram_unpin; goto err_drm_gem_vram_unpin;
...@@ -714,7 +719,7 @@ drm_gem_vram_plane_helper_cleanup_fb(struct drm_plane *plane, ...@@ -714,7 +719,7 @@ drm_gem_vram_plane_helper_cleanup_fb(struct drm_plane *plane,
if (!fb) if (!fb)
return; return;
__drm_gem_vram_plane_helper_cleanup_fb(plane, old_state, ARRAY_SIZE(fb->obj)); __drm_gem_vram_plane_helper_cleanup_fb(plane, old_state, fb->format->num_planes);
} }
EXPORT_SYMBOL(drm_gem_vram_plane_helper_cleanup_fb); EXPORT_SYMBOL(drm_gem_vram_plane_helper_cleanup_fb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment