sm7125: drm: msm: skip marking null blob changes as dirty

Change-Id: I89ed0d7b59d020ee269c7b400ae1db2bb8b62984
fourteen
Cosmin Tanislav 2 years ago committed by Simon1511
parent b23bcabe25
commit 84b7fede48
  1. 19
      drivers/gpu/drm/msm/msm_prop.c

@ -379,16 +379,18 @@ int msm_property_atomic_set(struct msm_property_info *info,
if ((property_idx == -EINVAL) || !property_state->values) { if ((property_idx == -EINVAL) || !property_state->values) {
DRM_ERROR("invalid argument(s)\n"); DRM_ERROR("invalid argument(s)\n");
} else { } else {
bool is_blob = (property->flags & DRM_MODE_PROP_BLOB) &&
(property_idx < info->blob_count);
struct drm_property_blob *prev_blob;
/* extra handling for incoming properties */ /* extra handling for incoming properties */
mutex_lock(&info->property_lock); mutex_lock(&info->property_lock);
if ((property->flags & DRM_MODE_PROP_BLOB) && if (is_blob) {
(property_idx < info->blob_count)) { prev_blob = property_state->values[property_idx].blob;
/* need to clear previous ref */ /* need to clear previous ref */
if (property_state->values[property_idx].blob) if (prev_blob)
drm_property_blob_put( drm_property_blob_put(prev_blob);
property_state->values[
property_idx].blob);
/* DRM lookup also takes a reference */ /* DRM lookup also takes a reference */
blob = drm_property_lookup_blob(info->dev, blob = drm_property_lookup_blob(info->dev,
@ -409,6 +411,9 @@ int msm_property_atomic_set(struct msm_property_info *info,
} }
} }
if (is_blob && !prev_blob && !blob)
goto skip_mark_dirty;
/* update value and flag as dirty */ /* update value and flag as dirty */
if (property_state->values[property_idx].value != val || if (property_state->values[property_idx].value != val ||
info->property_data[property_idx].force_dirty) { info->property_data[property_idx].force_dirty) {
@ -418,6 +423,8 @@ int msm_property_atomic_set(struct msm_property_info *info,
DBG("%s - %lld", property->name, val); DBG("%s - %lld", property->name, val);
} }
skip_mark_dirty:
mutex_unlock(&info->property_lock); mutex_unlock(&info->property_lock);
rc = 0; rc = 0;
} }

Loading…
Cancel
Save