drm/omap: add support for manually updated displays
This adds the required infrastructure for manually updated displays, such as DSI command mode panels. While those panels often support partial updates we currently always do a full refresh. The display will be refreshed when something calls the dirty callback, such as libdrm's drmModeDirtyFB(). This is currently being done at least by the kernel console and Xorg (with modesetting driver) in their default configuration. Weston does not implement this and the fbdev backend does not work (display will not update). Weston's DRM backend uses double buffering and the page flip will also trigger a display refresh. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:

committed by
Tomi Valkeinen

parent
47103a80f5
commit
1bb418bffd
@@ -66,8 +66,27 @@ struct omap_framebuffer {
|
||||
struct mutex lock;
|
||||
};
|
||||
|
||||
static int omap_framebuffer_dirty(struct drm_framebuffer *fb,
|
||||
struct drm_file *file_priv,
|
||||
unsigned flags, unsigned color,
|
||||
struct drm_clip_rect *clips,
|
||||
unsigned num_clips)
|
||||
{
|
||||
struct drm_crtc *crtc;
|
||||
|
||||
drm_modeset_lock_all(fb->dev);
|
||||
|
||||
drm_for_each_crtc(crtc, fb->dev)
|
||||
omap_crtc_flush(crtc);
|
||||
|
||||
drm_modeset_unlock_all(fb->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct drm_framebuffer_funcs omap_framebuffer_funcs = {
|
||||
.create_handle = drm_gem_fb_create_handle,
|
||||
.dirty = omap_framebuffer_dirty,
|
||||
.destroy = drm_gem_fb_destroy,
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user