compositor-drm: Remove drm_disable_unused_sprites()
If a sprite is no longer used, it is disabled on the call to drmModeSetPlane() when doing the output repaint, since its pending_fb_id is 0.
This commit is contained in:
committed by
Kristian Høgsberg
parent
d6f09a75a7
commit
3b2bd44d92
@@ -184,8 +184,6 @@ struct drm_seat {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
drm_output_set_cursor(struct drm_output *output);
|
drm_output_set_cursor(struct drm_output *output);
|
||||||
static void
|
|
||||||
drm_disable_unused_sprites(struct weston_output *output_base);
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
drm_sprite_crtc_supported(struct weston_output *output_base, uint32_t supported)
|
drm_sprite_crtc_supported(struct weston_output *output_base, uint32_t supported)
|
||||||
@@ -427,8 +425,6 @@ drm_output_repaint(struct weston_output *output_base,
|
|||||||
output->vblank_pending = 1;
|
output->vblank_pending = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
drm_disable_unused_sprites(&output->base);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -536,38 +532,6 @@ drm_surface_transform_supported(struct weston_surface *es)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
drm_disable_unused_sprites(struct weston_output *output_base)
|
|
||||||
{
|
|
||||||
struct weston_compositor *ec = output_base->compositor;
|
|
||||||
struct drm_compositor *c =(struct drm_compositor *) ec;
|
|
||||||
struct drm_output *output = (struct drm_output *) output_base;
|
|
||||||
struct drm_sprite *s;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
wl_list_for_each(s, &c->sprite_list, link) {
|
|
||||||
if (s->pending_fb_id)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
ret = drmModeSetPlane(c->drm.fd, s->plane_id,
|
|
||||||
output->crtc_id, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0);
|
|
||||||
if (ret)
|
|
||||||
weston_log("failed to disable plane: %d: %s\n",
|
|
||||||
ret, strerror(errno));
|
|
||||||
drmModeRmFB(c->drm.fd, s->fb_id);
|
|
||||||
|
|
||||||
if (s->surface) {
|
|
||||||
s->surface = NULL;
|
|
||||||
wl_list_remove(&s->destroy_listener.link);
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(!s->pending_surface);
|
|
||||||
s->fb_id = 0;
|
|
||||||
s->pending_fb_id = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct weston_plane *
|
static struct weston_plane *
|
||||||
drm_output_prepare_overlay_surface(struct weston_output *output_base,
|
drm_output_prepare_overlay_surface(struct weston_output *output_base,
|
||||||
struct weston_surface *es)
|
struct weston_surface *es)
|
||||||
|
|||||||
Reference in New Issue
Block a user