[PATCHv2 3/5] Add crtc properties for global histogram

Murthy, Arun R arun.r.murthy at intel.com
Wed Sep 4 05:01:36 UTC 2024


> > > +static int
> > > +intel_atomic_replace_property_blob_from_id(struct drm_device *dev,
> > > +					   struct drm_property_blob **blob,
> > > +					   u64 blob_id,
> > > +					   ssize_t expected_size,
> > > +					   ssize_t expected_elem_size,
> > > +					   bool *replaced)
> > > +{
> > > +	struct drm_property_blob *new_blob = NULL;
> > > +
> > > +	if (blob_id != 0) {
> > > +		new_blob = drm_property_lookup_blob(dev, blob_id);
> > > +		if (!new_blob)
> > > +			return -EINVAL;
> > > +
> > > +		if (expected_size > 0 &&
> > > +		    new_blob->length != expected_size) {
> > > +			drm_property_blob_put(new_blob);
> > > +			return -EINVAL;
> > > +		}
> > > +		if (expected_elem_size > 0 &&
> > > +		    new_blob->length % expected_elem_size != 0) {
> > > +			drm_property_blob_put(new_blob);
> > > +			return -EINVAL;
> > > +		}
> > > +	}
> > > +
> > > +	*replaced |= drm_property_replace_blob(blob, new_blob);
> > > +	drm_property_blob_put(new_blob);
> > > +
> > > +	return 0;
> > > +}
> > > +
> > Can we align this design to what we have for get property with similar
> > pattern of if else logic and return 0.
Done!

> > > +static int intel_crtc_set_property(struct drm_crtc *crtc,
> > > +				   struct drm_crtc_state *state,
> > > +				   struct drm_property *property,
> > > +				   u64 val)
> > > +{
> > > +	struct drm_i915_private *i915 = to_i915(crtc->dev);
> > > +	struct intel_crtc_state *intel_crtc_state =
> > > +		to_intel_crtc_state(state);
> > > +	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> > > +	bool replaced = false;
> > > +
> > > +	if (property == intel_crtc->histogram_en_property) {
> > > +		intel_crtc_state->histogram_en = val;
> > > +		intel_crtc_state->histogram_en_changed = true;
> > > +		return 0;
> > > +	}
> > > +
> > > +	if (property == intel_crtc->global_iet_property) {
> > > +		intel_atomic_replace_property_blob_from_id(crtc->dev,
> > > +							   &intel_crtc_state-
> > > >global_iet,
> > > +							   val,
> > > +							   sizeof(uint32_t) *
> > > HISTOGRAM_IET_LENGTH,
> > > +							   -1, &replaced);
> > > +		if (replaced)
> > > +			intel_crtc_state->global_iet_changed = true;
> > > +		return 0;
> > > +	}
> > > +
> > > +	drm_dbg_atomic(&i915->drm, "Unknown property
> > > [PROP:%d:%s]\n",
> > > +		       property->base.id, property->name);
> > > +	return -EINVAL;
> > > +}
> > > +
> > >  #define INTEL_CRTC_FUNCS \
> > >  	.set_config = drm_atomic_helper_set_config, \
> > >  	.destroy = intel_crtc_destroy, \
> > > @@ -229,7 +326,9 @@ static int intel_crtc_late_register(struct
> > > drm_crtc
> > > *crtc)
> > >  	.set_crc_source = intel_crtc_set_crc_source, \
> > >  	.verify_crc_source = intel_crtc_verify_crc_source, \
> > >  	.get_crc_sources = intel_crtc_get_crc_sources, \
> > > -	.late_register = intel_crtc_late_register
> > > +	.late_register = intel_crtc_late_register, \
> > > +	.atomic_set_property = intel_crtc_set_property, \
> > > +	.atomic_get_property = intel_crtc_get_property
> >
> > +dri-devel
> >
> > Can this be made drm crtc property as histogram is generic?
> >
If there are other drivers using this property then this can be made a drm_crtc property.

Thanks and Regards,
Arun R Murthy
--------------------


More information about the dri-devel mailing list