mbox series

[0/3] Add scaling filters in DRM layer

Message ID 20191022095946.29354-1-shashank.sharma@intel.com (mailing list archive)
Headers show
Series Add scaling filters in DRM layer | expand

Message

Sharma, Shashank Oct. 22, 2019, 9:59 a.m. UTC
Blurry outputs during upscaling the video buffer, is a generic problem
of graphics industry. One of the major reason behind this blurriness is
the interpolation of pixel values used by most of the upscaling hardwares.

Nearest-neighbor is a scaling mode, which works by filling in the missing
color values in the upscaled image with that of the coordinate-mapped
nearest source pixel value.

Nearest-neighbor can produce (almost) non-blurry scaling outputs when
the scaling ratio is complete integer. For example:
- input buffer resolution: 1280x720(HD)
- output buffer resolution: 3840x2160(UHD/4K)
- scaling ratio (h) = 3840/1280 = 3  
- scaling ratio (v) = 2160/720 = 3

In such scenarios, we should try to pick Nearest-neighbor as scaling
method when possible.

Many gaming communities have been asking for integer-mode scaling
support, some links and background:
https://software.intel.com/en-us/articles/integer-scaling-support-on-intel-graphics
http://tanalin.com/en/articles/lossless-scaling/
https://community.amd.com/thread/209107
https://www.nvidia.com/en-us/geforce/forums/game-ready-drivers/13/1002/feature-request-nonblurry-upscaling-at-integer-rat/

This patch series adds support for programmable scaling filters, which
can help a user to pick and enables NN scaling on Intel display hardware
(ICL onwards). There is also one option to pick NN only when the scaling
ratios are integer, to achieve Integer scaling, without(alsmost) any side effets.

there was an RFC series published for the same, which can be seen here: 
https://patchwork.freedesktop.org/series/66175/ 

Shashank Sharma (3):
  drm: Introduce scaling filter mode property
  drm/i915: Add support for scaling filters
  drm/i915: Handle nearest-neighbor scaling filter

 drivers/gpu/drm/drm_atomic_uapi.c             |   4 +
 drivers/gpu/drm/i915/display/intel_display.c  | 161 +++++++++++++++++-
 .../drm/i915/display/intel_display_types.h    |   3 +
 drivers/gpu/drm/i915/i915_reg.h               |  31 ++++
 include/drm/drm_crtc.h                        |  26 +++
 include/drm/drm_mode_config.h                 |   6 +
 6 files changed, 230 insertions(+), 1 deletion(-)