mbox series

[v7,0/4] Introduce drm scaling filter property

Message ID 20201020161427.6941-1-pankaj.laxminarayan.bharadiya@intel.com (mailing list archive)
Headers show
Series Introduce drm scaling filter property | expand

Message

Pankaj Bharadiya Oct. 20, 2020, 4:14 p.m. UTC
Kodi patches are reviewed and accepted for merge now.

Here is the userspace patch series link:
https://github.com/xbmc/xbmc/pull/18567

Background on Integer scaling:

Integer scaling (IS) is a nearest-neighbor upscaling technique that
simply scales up the existing pixels by an integer (i.e., whole
number) multiplier. Nearest-neighbor (NN) interpolation works by
filling in the missing color values in the upscaled image with that of
the coordinate-mapped nearest source pixel value.

Both IS and NN preserve the clarity of the original image. In
contrast, traditional upscaling algorithms, such as bilinear or
bicubic interpolation, result in blurry upscaled images because they
employ interpolation techniques that smooth out the transition from
one pixel to another.  Therefore, integer scaling is particularly
useful for pixel art games that rely on sharp, blocky images to
deliver their distinctive look.

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/

changes since v6:
* Move property doc to existing "Standard CRTC Properties" and
  "Plane Composition Properties" doc comments (Simon)
* Drop 0002 patch

Pankaj Bharadiya (4):
  drm: Introduce plane and CRTC scaling filter properties
  drm/i915: Introduce scaling filter related registers and bit fields
  drm/i915/display: Add Nearest-neighbor based integer scaling support
  drm/i915: Enable scaling filter for plane and CRTC

 drivers/gpu/drm/drm_atomic_uapi.c             |   8 ++
 drivers/gpu/drm/drm_blend.c                   |  13 ++
 drivers/gpu/drm/drm_crtc.c                    |  40 ++++++
 drivers/gpu/drm/drm_crtc_internal.h           |   3 +
 drivers/gpu/drm/drm_plane.c                   |  73 +++++++++++
 .../gpu/drm/i915/display/intel_atomic_plane.c |   1 +
 drivers/gpu/drm/i915/display/intel_display.c  | 117 +++++++++++++++++-
 drivers/gpu/drm/i915/display/intel_display.h  |   4 +
 .../drm/i915/display/intel_display_types.h    |   2 +
 drivers/gpu/drm/i915/display/intel_sprite.c   |  15 ++-
 drivers/gpu/drm/i915/i915_reg.h               |  22 ++++
 include/drm/drm_crtc.h                        |  16 +++
 include/drm/drm_plane.h                       |  21 ++++
 13 files changed, 331 insertions(+), 4 deletions(-)

Comments

Jani Nikula Oct. 21, 2020, 9:44 a.m. UTC | #1
On Tue, 20 Oct 2020, Pankaj Bharadiya <pankaj.laxminarayan.bharadiya@intel.com> wrote:
> Kodi patches are reviewed and accepted for merge now.
>
> Here is the userspace patch series link:
> https://github.com/xbmc/xbmc/pull/18567
>
> Background on Integer scaling:
>
> Integer scaling (IS) is a nearest-neighbor upscaling technique that
> simply scales up the existing pixels by an integer (i.e., whole
> number) multiplier. Nearest-neighbor (NN) interpolation works by
> filling in the missing color values in the upscaled image with that of
> the coordinate-mapped nearest source pixel value.
>
> Both IS and NN preserve the clarity of the original image. In
> contrast, traditional upscaling algorithms, such as bilinear or
> bicubic interpolation, result in blurry upscaled images because they
> employ interpolation techniques that smooth out the transition from
> one pixel to another.  Therefore, integer scaling is particularly
> useful for pixel art games that rely on sharp, blocky images to
> deliver their distinctive look.
>
> 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/

Thanks for the patches and review, pushed to dinq with Daniel's IRC ack
to merge via drm-intel.

BR,
Jani.


>
> changes since v6:
> * Move property doc to existing "Standard CRTC Properties" and
>   "Plane Composition Properties" doc comments (Simon)
> * Drop 0002 patch
>
> Pankaj Bharadiya (4):
>   drm: Introduce plane and CRTC scaling filter properties
>   drm/i915: Introduce scaling filter related registers and bit fields
>   drm/i915/display: Add Nearest-neighbor based integer scaling support
>   drm/i915: Enable scaling filter for plane and CRTC
>
>  drivers/gpu/drm/drm_atomic_uapi.c             |   8 ++
>  drivers/gpu/drm/drm_blend.c                   |  13 ++
>  drivers/gpu/drm/drm_crtc.c                    |  40 ++++++
>  drivers/gpu/drm/drm_crtc_internal.h           |   3 +
>  drivers/gpu/drm/drm_plane.c                   |  73 +++++++++++
>  .../gpu/drm/i915/display/intel_atomic_plane.c |   1 +
>  drivers/gpu/drm/i915/display/intel_display.c  | 117 +++++++++++++++++-
>  drivers/gpu/drm/i915/display/intel_display.h  |   4 +
>  .../drm/i915/display/intel_display_types.h    |   2 +
>  drivers/gpu/drm/i915/display/intel_sprite.c   |  15 ++-
>  drivers/gpu/drm/i915/i915_reg.h               |  22 ++++
>  include/drm/drm_crtc.h                        |  16 +++
>  include/drm/drm_plane.h                       |  21 ++++
>  13 files changed, 331 insertions(+), 4 deletions(-)