Merge branch 'drm-first-draw-fixes' into 'master'

Drm first draw fixes

See merge request plymouth/plymouth!75
This commit is contained in:
Hans de Goede 2019-10-13 12:17:03 +00:00
commit e9d6020071

View file

@ -163,8 +163,6 @@ struct _ply_renderer_backend
};
ply_renderer_plugin_interface_t *ply_renderer_backend_get_interface (void);
static void ply_renderer_head_redraw (ply_renderer_backend_t *backend,
ply_renderer_head_t *head);
static bool open_input_source (ply_renderer_backend_t *backend,
ply_renderer_input_source_t *input_source);
static bool reset_scan_out_buffer_if_needed (ply_renderer_backend_t *backend,
@ -1536,13 +1534,8 @@ map_to_device (ply_renderer_backend_t *backend)
head = (ply_renderer_head_t *) ply_list_node_get_data (node);
next_node = ply_list_get_next_node (backend->heads, node);
if (ply_renderer_head_map (backend, head)) {
/* FIXME: Maybe we should blit the fbcon contents instead of the (blank)
* shadow buffer?
*/
ply_renderer_head_redraw (backend, head);
if (ply_renderer_head_map (backend, head))
head_mapped = true;
}
node = next_node;
}
@ -1621,6 +1614,7 @@ flush_head (ply_renderer_backend_t *backend,
ply_list_node_t *node;
ply_pixel_buffer_t *pixel_buffer;
char *map_address;
bool dirty = false;
assert (backend != NULL);
@ -1652,35 +1646,23 @@ flush_head (ply_renderer_backend_t *backend,
next_node = ply_list_get_next_node (areas_to_flush, node);
if (reset_scan_out_buffer_if_needed (backend, head))
ply_trace ("Needed to reset scan out buffer on %ldx%ld renderer head",
head->area.width, head->area.height);
ply_renderer_head_flush_area (head, area_to_flush, map_address);
dirty = true;
node = next_node;
}
end_flush (backend, head->scan_out_buffer_id);
if (dirty) {
if (reset_scan_out_buffer_if_needed (backend, head))
ply_trace ("Needed to reset scan out buffer on %ldx%ld renderer head",
head->area.width, head->area.height);
end_flush (backend, head->scan_out_buffer_id);
}
ply_region_clear (updated_region);
}
static void
ply_renderer_head_redraw (ply_renderer_backend_t *backend,
ply_renderer_head_t *head)
{
ply_region_t *region;
ply_trace ("Redrawing %ldx%ld renderer head", head->area.width, head->area.height);
region = ply_pixel_buffer_get_updated_areas (head->pixel_buffer);
ply_region_add_rectangle (region, &head->area);
flush_head (backend, head);
}
static ply_list_t *
get_heads (ply_renderer_backend_t *backend)
{