Regards Shashank
On 8/22/2015 4:11 AM, Matt Roper wrote: > On Thu, Aug 06, 2015 at 10:08:24PM +0530, Shashank Sharma wrote: >> From: Kausal Malladi <kausalmalladi at gmail.com> >> >> This patch initializes gamma color correction proeprty > ^^^^^^^^ > typo Oops ! >> for Gen8 and higher platforms. > > I'd specifically say 'BDW and Gen9' here since we already have some gen8 > support (CHV). > Agree. Will change it. >> >> It does the following : >> 1. Load pipe Gamma color correction capabilities for BDW/SKL/BXT >> 2. Attach the color properties to CRTC >> >> Signed-off-by: Shashank Sharma <shashank.sharma at intel.com> >> Signed-off-by: Kausal Malladi <kausalmalladi at gmail.com> >> --- >> drivers/gpu/drm/i915/intel_color_manager.c | 30 >> +++++++++++++++++++++++++++++- >> drivers/gpu/drm/i915/intel_color_manager.h | 3 +++ >> 2 files changed, 32 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/i915/intel_color_manager.c >> b/drivers/gpu/drm/i915/intel_color_manager.c >> index 5fa575b..bc77ab5 100644 >> --- a/drivers/gpu/drm/i915/intel_color_manager.c >> +++ b/drivers/gpu/drm/i915/intel_color_manager.c >> @@ -475,11 +475,39 @@ int get_chv_pipe_gamma_capabilities(struct drm_device >> *dev, >> return 0; >> } >> >> +int get_gen9_pipe_gamma_capabilities(struct drm_device *dev, >> + struct drm_palette_caps *palette_caps, struct drm_crtc *crtc) > > Calling this 'gen9' seems a little confusing to me given that it's also > used for BDW, which is a gen8 platform. The general pattern is that > functions get named after the first platform that works a specific way, > so I'd expect this to be called "get_bdw_pipe_gamma_capabilities." > Yes, its a mistake. I will fix this and will be more specific. >> +{ >> + struct drm_property_blob *blob = NULL; >> + >> + /* >> + * This function exposes best capability for DeGamma and Gamma >> + * For BXT, the DeGamma LUT has 512 entries >> + * and the best Gamma capability has 512 entries >> + */ >> + palette_caps->version = GEN9_PALETTE_STRUCT_VERSION; >> + palette_caps->num_samples_before_ctm = >> + GEN9_SPLITGAMMA_MAX_VALS; >> + palette_caps->num_samples_after_ctm = >> + GEN9_SPLITGAMMA_MAX_VALS; >> + >> + blob = drm_property_create_blob(dev, sizeof(struct drm_palette_caps), >> + (const void *) palette_caps); > > We're pretty much doing the same thing we did for CHV, but just filling > in different values. Could we just stick the number of samples in > INTEL_INFO(dev)->num_gamma_samples_{before/after}_ctm instead and then > have a single function that fills out your capability blob (or at least > the part of it that we have today) across all platforms? Or is this > something that we think might actually start to vary across the > different pipes of a single platform in the future? > Thanks, that's pretty good suggestion. Will do that. >> + >> + if (blob) >> + return blob->base.id; >> + >> + return 0; >> +} >> + >> int get_pipe_gamma_capabilities(struct drm_device *dev, >> struct drm_palette_caps *palette_caps, struct drm_crtc *crtc) >> { >> if (IS_CHERRYVIEW(dev)) >> return get_chv_pipe_gamma_capabilities(dev, palette_caps, crtc); >> + if (IS_BROADWELL(dev) || IS_GEN9(dev)) >> + return get_gen9_pipe_gamma_capabilities(dev, >> + palette_caps, crtc); >> return -EINVAL; >> } >> >> @@ -491,7 +519,7 @@ void intel_attach_color_properties_to_crtc(struct >> drm_device *dev, >> struct drm_crtc *crtc; >> int capabilities_blob_id; >> >> - if (IS_CHERRYVIEW(dev)) { >> + if (IS_CHERRYVIEW(dev) || IS_BROADWELL(dev) || IS_GEN9(dev)) { > > 'IS_CHERRYVIEW(dev) || IS_BROADWELL(dev)' could be simplified to just > 'IS_GEN8(dev)' right? > yep, will do it. > > Matt > > >> crtc = obj_to_crtc(mode_obj); >> >> palette_caps = kzalloc(sizeof(struct drm_palette_caps), >> diff --git a/drivers/gpu/drm/i915/intel_color_manager.h >> b/drivers/gpu/drm/i915/intel_color_manager.h >> index b2ee847..78de1a2 100644 >> --- a/drivers/gpu/drm/i915/intel_color_manager.h >> +++ b/drivers/gpu/drm/i915/intel_color_manager.h >> @@ -35,6 +35,9 @@ >> #define CHV_DEGAMMA_MAX_VALS 65 >> #define CHV_10BIT_GAMMA_MAX_VALS 257 >> >> +#define GEN9_PALETTE_STRUCT_VERSION 1 >> +#define GEN9_SPLITGAMMA_MAX_VALS 512 >> + >> /* Gamma correction */ >> #define CHV_GAMMA_DATA_STRUCT_VERSION 1 >> #define CHV_10BIT_GAMMA_MAX_VALS 257 >> -- >> 1.9.1 >> >