Skip to content

Commit

Permalink
drm/atomic: If margins are updated, update all planes.
Browse files Browse the repository at this point in the history
Margins may be implemented by scaling the planes, but as there
is no way of intercepting the set_property for a standard property,
and all planes are checked in drm_atomic_check_only before the
connectors, there's now way to add the planes into the state
from the driver.

If the margin properties change, add all corresponding planes to
the state.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
  • Loading branch information
6by9 authored and popcornmix committed Nov 29, 2022
1 parent dbf50b6 commit f59a335
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions drivers/gpu/drm/drm_atomic_uapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -679,6 +679,7 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
{
struct drm_device *dev = connector->dev;
struct drm_mode_config *config = &dev->mode_config;
bool margins_updated = false;
bool replaced = false;
int ret;

Expand All @@ -698,12 +699,16 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
state->tv.subconnector = val;
} else if (property == config->tv_left_margin_property) {
state->tv.margins.left = val;
margins_updated = true;
} else if (property == config->tv_right_margin_property) {
state->tv.margins.right = val;
margins_updated = true;
} else if (property == config->tv_top_margin_property) {
state->tv.margins.top = val;
margins_updated = true;
} else if (property == config->tv_bottom_margin_property) {
state->tv.margins.bottom = val;
margins_updated = true;
} else if (property == config->tv_mode_property) {
state->tv.mode = val;
} else if (property == config->tv_brightness_property) {
Expand Down Expand Up @@ -784,6 +789,12 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
return -EINVAL;
}

if (margins_updated && state->crtc) {
ret = drm_atomic_add_affected_planes(state->state, state->crtc);

return ret;
}

return 0;
}

Expand Down

0 comments on commit f59a335

Please sign in to comment.