On Thu, Nov 07, 2019 at 06:40:14PM +0100, Daniel Vetter wrote: > On Thu, Nov 07, 2019 at 05:17:14PM +0200, Ville Syrjala wrote: > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > > > This thing can get called several thousand times per LUT > > so seems like we want to inline it to: > > - avoid the function call overhead > > - allow constant folding > > > > A quick synthetic test (w/o any hardware interaction) with > > a ridiculously large LUT size shows about 50% reduction in > > runtime on my HSW and BSW boxes. Slightly less with more > > reasonable LUT size but still easily measurable in tens > > of microseconds. > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > --- > > drivers/gpu/drm/drm_color_mgmt.c | 24 ------------------------ > > include/drm/drm_color_mgmt.h | 23 ++++++++++++++++++++++- > > You forgot to add the include stanza in the kerneldoc .rst files, which > means this is now lost from the output. Please fix. Aye. A bit funny that we already have a bunch of other kerneldocs in that header but it's not included in the .rst. > -Daniel > > > 2 files changed, 22 insertions(+), 25 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_color_mgmt.c b/drivers/gpu/drm/drm_color_mgmt.c > > index 4ce5c6d8de99..19c5f635992a 100644 > > --- a/drivers/gpu/drm/drm_color_mgmt.c > > +++ b/drivers/gpu/drm/drm_color_mgmt.c > > @@ -108,30 +108,6 @@ > > * standard enum values supported by the DRM plane. > > */ > > > > -/** > > - * drm_color_lut_extract - clamp and round LUT entries > > - * @user_input: input value > > - * @bit_precision: number of bits the hw LUT supports > > - * > > - * Extract a degamma/gamma LUT value provided by user (in the form of > > - * &drm_color_lut entries) and round it to the precision supported by the > > - * hardware. > > - */ > > -uint32_t drm_color_lut_extract(uint32_t user_input, uint32_t bit_precision) > > -{ > > - uint32_t val = user_input; > > - uint32_t max = 0xffff >> (16 - bit_precision); > > - > > - /* Round only if we're not using full precision. */ > > - if (bit_precision < 16) { > > - val += 1UL << (16 - bit_precision - 1); > > - val >>= 16 - bit_precision; > > - } > > - > > - return clamp_val(val, 0, max); > > -} > > -EXPORT_SYMBOL(drm_color_lut_extract); > > - > > /** > > * drm_crtc_enable_color_mgmt - enable color management properties > > * @crtc: DRM CRTC > > diff --git a/include/drm/drm_color_mgmt.h b/include/drm/drm_color_mgmt.h > > index d1c662d92ab7..069b21d61871 100644 > > --- a/include/drm/drm_color_mgmt.h > > +++ b/include/drm/drm_color_mgmt.h > > @@ -29,7 +29,28 @@ > > struct drm_crtc; > > struct drm_plane; > > > > -uint32_t drm_color_lut_extract(uint32_t user_input, uint32_t bit_precision); > > +/** > > + * drm_color_lut_extract - clamp and round LUT entries > > + * @user_input: input value > > + * @bit_precision: number of bits the hw LUT supports > > + * > > + * Extract a degamma/gamma LUT value provided by user (in the form of > > + * &drm_color_lut entries) and round it to the precision supported by the > > + * hardware. > > + */ > > +static inline u32 drm_color_lut_extract(u32 user_input, int bit_precision) > > +{ > > + u32 val = user_input; > > + u32 max = 0xffff >> (16 - bit_precision); > > + > > + /* Round only if we're not using full precision. */ > > + if (bit_precision < 16) { > > + val += 1UL << (16 - bit_precision - 1); > > + val >>= 16 - bit_precision; > > + } > > + > > + return clamp_val(val, 0, max); > > +} > > > > void drm_crtc_enable_color_mgmt(struct drm_crtc *crtc, > > uint degamma_lut_size, > > -- > > 2.23.0 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx