mbox series

[v4,0/3] Support 64 bpp half float formats

Message ID 1549476133-9172-1-git-send-email-kevin.strasser@intel.com (mailing list archive)
Headers show
Series Support 64 bpp half float formats | expand

Message

Kevin Strasser Feb. 6, 2019, 6:02 p.m. UTC
This series defines new formats and adds implementation to the i915 driver.
Since posting v1 I have removed the pixel normalize property, as it's not needed
for basic functionality. Also, I have been working on adding support to
userspace, but we can't land any patches until drm_fourcc.h has been updated
here.

I have submitted a series to Mesa to make use of the RGBA ordered formats:
  https://patchwork.freedesktop.org/series/54759/

My igt branch is reworked to drop usage of pixel normalize and includes use
of f16c intrinsics to speed up conversion:
  https://gitlab.freedesktop.org/strassek/igt-gpu-tools/commits/fp16

I also have a libdrm branch with fp16 coverage added to modetest:
  https://gitlab.freedesktop.org/strassek/drm/commits/fp16

To serve as a smoke test of the whole stack I have a modified version of
kmscube:
  https://gitlab.freedesktop.org/strassek/kmscube/commits/fp16

Kevin Strasser (3):
  drm/fourcc: Add 64 bpp half float formats
  drm/i915: Refactor icl_is_hdr_plane
  drm/i915/icl: Implement half float formats

 drivers/gpu/drm/drm_fourcc.c         |  4 ++
 drivers/gpu/drm/i915/intel_atomic.c  |  3 +-
 drivers/gpu/drm/i915/intel_display.c | 27 ++++++++++++-
 drivers/gpu/drm/i915/intel_drv.h     |  7 ++--
 drivers/gpu/drm/i915/intel_sprite.c  | 73 +++++++++++++++++++++++++++++++-----
 include/uapi/drm/drm_fourcc.h        | 11 ++++++
 6 files changed, 110 insertions(+), 15 deletions(-)

Comments

Maarten Lankhorst Feb. 8, 2019, 2:49 p.m. UTC | #1
Op 06-02-2019 om 19:02 schreef Kevin Strasser:
> This series defines new formats and adds implementation to the i915 driver.
> Since posting v1 I have removed the pixel normalize property, as it's not needed
> for basic functionality. Also, I have been working on adding support to
> userspace, but we can't land any patches until drm_fourcc.h has been updated
> here.
>
> I have submitted a series to Mesa to make use of the RGBA ordered formats:
>   https://patchwork.freedesktop.org/series/54759/
>
> My igt branch is reworked to drop usage of pixel normalize and includes use
> of f16c intrinsics to speed up conversion:
>   https://gitlab.freedesktop.org/strassek/igt-gpu-tools/commits/fp16
>
> I also have a libdrm branch with fp16 coverage added to modetest:
>   https://gitlab.freedesktop.org/strassek/drm/commits/fp16
>
> To serve as a smoke test of the whole stack I have a modified version of
> kmscube:
>   https://gitlab.freedesktop.org/strassek/kmscube/commits/fp16
>
> Kevin Strasser (3):
>   drm/fourcc: Add 64 bpp half float formats
>   drm/i915: Refactor icl_is_hdr_plane
>   drm/i915/icl: Implement half float formats
>
>  drivers/gpu/drm/drm_fourcc.c         |  4 ++
>  drivers/gpu/drm/i915/intel_atomic.c  |  3 +-
>  drivers/gpu/drm/i915/intel_display.c | 27 ++++++++++++-
>  drivers/gpu/drm/i915/intel_drv.h     |  7 ++--
>  drivers/gpu/drm/i915/intel_sprite.c  | 73 +++++++++++++++++++++++++++++++-----
>  include/uapi/drm/drm_fourcc.h        | 11 ++++++
>  6 files changed, 110 insertions(+), 15 deletions(-)
>
It's nice that the igt parts are almost done. I think this might need rebasing on top of

I'm glad there are tests, but the internal accuracy of the CAIRO_FORMAT_RGB24 is only 8 bits, so it wouldn't test this properly.

Fortunately we will start using CAIRO_FORMAT_RGB96F and RGBA128F soon. :)

See https://patchwork.freedesktop.org/patch/284507/

We should be able to convert native float to half float with an intrinsic.

~Maarten
Kevin Strasser Feb. 8, 2019, 6:53 p.m. UTC | #2
Maarten Lankhorst wrote:
> It's nice that the igt parts are almost done. I think this might need rebasing
> on top of
>
> I'm glad there are tests, but the internal accuracy of the CAIRO_FORMAT_RGB24
> is only 8 bits, so it wouldn't test this properly.
>
> Fortunately we will start using CAIRO_FORMAT_RGB96F and RGBA128F soon. :)
>
> See https://patchwork.freedesktop.org/patch/284507/
>
> We should be able to convert native float to half float with an intrinsic.

Thanks for the pointer, native fp32 formats should make for fewer conversions
too.

I just updated my gitlab branch with a more recent rebase. I already have 
non-simd f16c instrinsics working, you can take a look at [1]. I experimented
with the simd intrinsics too, but they were a bit slower, I would expect better
results with pixel data that is already stored in fp32.

Thanks,
Kevin

[1] https://gitlab.freedesktop.org/strassek/igt-gpu-tools/commit/910551867376b8ead3ab738056247486d422fff9