drm/gem: Clear mapping addresses for unused framebuffer planes
Set the returned mapping address to NULL if a framebuffer plane does not have a BO associated with it. Likewise, ignore mappings of NULL during framebuffer unmap operations. Allows users of the functions to perform unmap operations of certain BOs by themselfes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Link: https://patchwork.freedesktop.org/patch/msgid/20210730183511.20080-4-tzimmermann@suse.de
This commit is contained in:
parent
f6424ecdb3
commit
0ec77bd92b
|
@ -335,8 +335,10 @@ int drm_gem_fb_vmap(struct drm_framebuffer *fb,
|
||||||
|
|
||||||
for (i = 0; i < DRM_FORMAT_MAX_PLANES; ++i) {
|
for (i = 0; i < DRM_FORMAT_MAX_PLANES; ++i) {
|
||||||
obj = drm_gem_fb_get_obj(fb, i);
|
obj = drm_gem_fb_get_obj(fb, i);
|
||||||
if (!obj)
|
if (!obj) {
|
||||||
|
dma_buf_map_clear(&map[i]);
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
ret = drm_gem_vmap(obj, &map[i]);
|
ret = drm_gem_vmap(obj, &map[i]);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_drm_gem_vunmap;
|
goto err_drm_gem_vunmap;
|
||||||
|
@ -376,6 +378,8 @@ void drm_gem_fb_vunmap(struct drm_framebuffer *fb,
|
||||||
obj = drm_gem_fb_get_obj(fb, i);
|
obj = drm_gem_fb_get_obj(fb, i);
|
||||||
if (!obj)
|
if (!obj)
|
||||||
continue;
|
continue;
|
||||||
|
if (dma_buf_map_is_null(&map[i]))
|
||||||
|
continue;
|
||||||
drm_gem_vunmap(obj, &map[i]);
|
drm_gem_vunmap(obj, &map[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue