Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46ec8687 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "disp: msm: sde: check all dirty properties during plane update"

parents bd355c78 4de15bb6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -77,7 +77,8 @@ int msm_property_pop_dirty(struct msm_property_info *info,
		return -EINVAL;
	}

	mutex_lock(&info->property_lock);
	WARN_ON(!mutex_is_locked(&info->property_lock));

	if (list_empty(&property_state->dirty_list)) {
		rc = -EAGAIN;
	} else {
@@ -87,7 +88,6 @@ int msm_property_pop_dirty(struct msm_property_info *info,
			- property_state->values;
		DRM_DEBUG_KMS("property %d dirty\n", rc);
	}
	mutex_unlock(&info->property_lock);

	return rc;
}
+3 −1
Original line number Diff line number Diff line
@@ -162,7 +162,9 @@ bool msm_property_get_is_active(struct msm_property_info *info)

/**
 * msm_property_pop_dirty - determine next dirty property and clear
 *                          its dirty flag
 *                          its dirty flag. Caller needs to acquire property
 *			  lock before calling this function and release
 *			  the lock when finished.
 * @info: Pointer to property info container struct
 * @property_state: Pointer to property state container struct
 * Returns: Valid msm property index on success,
+2 −0
Original line number Diff line number Diff line
@@ -701,6 +701,7 @@ static int _sde_connector_update_dirty_properties(
	c_conn = to_sde_connector(connector);
	c_state = to_sde_connector_state(connector->state);

	mutex_lock(&c_conn->property_info.property_lock);
	while ((idx = msm_property_pop_dirty(&c_conn->property_info,
					&c_state->property_state)) >= 0) {
		switch (idx) {
@@ -723,6 +724,7 @@ static int _sde_connector_update_dirty_properties(
			break;
		}
	}
	mutex_unlock(&c_conn->property_info.property_lock);

	/* if colorspace needs to be updated do it first */
	if (c_conn->colorspace_updated) {
+2 −3
Original line number Diff line number Diff line
@@ -3182,14 +3182,13 @@ static int sde_plane_sspp_atomic_update(struct drm_plane *plane,
	}

	/* determine what needs to be refreshed */
	mutex_lock(&psde->property_info.property_lock);
	while ((idx = msm_property_pop_dirty(&psde->property_info,
				&pstate->property_state)) >= 0) {
		dirty_prop_flag = plane_prop_array[idx];
		pstate->dirty |= dirty_prop_flag;

		if (dirty_prop_flag == SDE_PLANE_DIRTY_ALL)
			break;
	}
	mutex_unlock(&psde->property_info.property_lock);

	/**
	 * since plane_atomic_check is invoked before crtc_atomic_check