Remove primary plane special case

This doesn't work on i915. 8a971695bd ("test: introduce
liftoff_mock_require_primary_plane") makes sure we catch this in
the tests.
This commit is contained in:
Simon Ser 2021-08-13 12:41:36 +02:00
parent bc0d0617ac
commit 73f4867ba1
3 changed files with 16 additions and 29 deletions

10
alloc.c
View file

@ -127,7 +127,7 @@ plane_step_init_next(struct alloc_step *step, struct alloc_step *prev,
if (layer != NULL) { if (layer != NULL) {
zpos_prop = layer_get_property(layer, "zpos"); zpos_prop = layer_get_property(layer, "zpos");
} }
if (zpos_prop != NULL && plane->type != DRM_PLANE_TYPE_PRIMARY) { if (zpos_prop != NULL) {
step->last_layer_zpos = zpos_prop->value; step->last_layer_zpos = zpos_prop->value;
} else { } else {
step->last_layer_zpos = prev->last_layer_zpos; step->last_layer_zpos = prev->last_layer_zpos;
@ -212,9 +212,6 @@ has_allocated_layer_over(struct liftoff_output *output, struct alloc_step *step,
if (i >= (ssize_t)step->plane_idx) { if (i >= (ssize_t)step->plane_idx) {
break; break;
} }
if (other_plane->type == DRM_PLANE_TYPE_PRIMARY) {
continue;
}
other_layer = step->alloc[i]; other_layer = step->alloc[i];
if (other_layer == NULL) { if (other_layer == NULL) {
@ -253,9 +250,6 @@ has_allocated_plane_under(struct liftoff_output *output,
if (i >= (ssize_t)step->plane_idx) { if (i >= (ssize_t)step->plane_idx) {
break; break;
} }
if (other_plane->type == DRM_PLANE_TYPE_PRIMARY) {
continue;
}
if (step->alloc[i] == NULL) { if (step->alloc[i] == NULL) {
continue; continue;
} }
@ -311,7 +305,7 @@ check_layer_plane_compatible(struct alloc_step *step,
} }
} }
if (plane->type != DRM_PLANE_TYPE_PRIMARY && if (layer != layer->output->composition_layer &&
has_composited_layer_over(output, step, layer)) { has_composited_layer_over(output, step, layer)) {
liftoff_log(LIFTOFF_DEBUG, liftoff_log(LIFTOFF_DEBUG,
"%s Layer %p -> plane %"PRIu32": " "%s Layer %p -> plane %"PRIu32": "

23
plane.c
View file

@ -119,23 +119,16 @@ liftoff_plane_create(struct liftoff_device *device, uint32_t id)
} }
/* During plane allocation, we will use the plane list order to fill /* During plane allocation, we will use the plane list order to fill
* planes with FBs. Primary planes need to be filled first, then planes * planes with FBs. */
* far from the primary planes, then planes closer and closer to the liftoff_list_for_each(cur, &device->planes, link) {
* primary plane. */ if (plane->zpos >= cur->zpos) {
if (plane->type == DRM_PLANE_TYPE_PRIMARY) { liftoff_list_insert(cur->link.prev, &plane->link);
liftoff_list_insert(&device->planes, &plane->link); break;
} else {
liftoff_list_for_each(cur, &device->planes, link) {
if (cur->type != DRM_PLANE_TYPE_PRIMARY &&
plane->zpos >= cur->zpos) {
liftoff_list_insert(cur->link.prev, &plane->link);
break;
}
} }
}
if (plane->link.next == NULL) { /* not inserted */ if (plane->link.next == NULL) { /* not inserted */
liftoff_list_insert(device->planes.prev, &plane->link); liftoff_list_insert(device->planes.prev, &plane->link);
}
} }
return plane; return plane;

View file

@ -159,7 +159,7 @@ static struct test_case tests[] = {
.height = 1080, .height = 1080,
.zpos = 1, .zpos = 1,
.compat = { PRIMARY_PLANE }, .compat = { PRIMARY_PLANE },
.result = PRIMARY_PLANE, .result = NULL,
}, },
{ {
.width = 100, .width = 100,
@ -190,7 +190,7 @@ static struct test_case tests[] = {
.height = 1080, .height = 1080,
.zpos = 1, .zpos = 1,
.compat = { PRIMARY_PLANE }, .compat = { PRIMARY_PLANE },
.result = PRIMARY_PLANE, .result = NULL,
}, },
{ {
.width = 100, .width = 100,
@ -218,7 +218,7 @@ static struct test_case tests[] = {
.height = 1080, .height = 1080,
.zpos = 1, .zpos = 1,
.compat = { PRIMARY_PLANE }, .compat = { PRIMARY_PLANE },
.result = PRIMARY_PLANE, .result = NULL,
}, },
{ {
.width = 100, .width = 100,
@ -282,7 +282,7 @@ static struct test_case tests[] = {
.height = 1080, .height = 1080,
.zpos = 1, .zpos = 1,
.compat = { PRIMARY_PLANE }, .compat = { PRIMARY_PLANE },
.result = PRIMARY_PLANE, .result = NULL,
}, },
{ {
.width = 100, .width = 100,
@ -394,7 +394,7 @@ static struct test_case tests[] = {
.height = 1080, .height = 1080,
.zpos = 1, .zpos = 1,
.compat = { PRIMARY_PLANE }, .compat = { PRIMARY_PLANE },
.result = PRIMARY_PLANE, .result = NULL,
}, },
{ {
.width = 100, .width = 100,
@ -435,7 +435,7 @@ static struct test_case tests[] = {
.height = 1080, .height = 1080,
.zpos = 1, .zpos = 1,
.compat = { PRIMARY_PLANE }, .compat = { PRIMARY_PLANE },
.result = PRIMARY_PLANE, .result = NULL,
}, },
{ {
.width = 100, .width = 100,