mbox series

[libdrm,00/10] Add C8, 30bpp and FP16 support to modetest

Message ID 20190603004017.7114-1-imirkin@alum.mit.edu (mailing list archive)
Headers show
Series Add C8, 30bpp and FP16 support to modetest | expand

Message

Ilia Mirkin June 3, 2019, 12:40 a.m. UTC
This series improves the pattern generation logic to support additional
formats, as well as a new "gradient" pattern (see patch comments on why
I found it useful).

Furthermore, these formats are piped through to modetest, including the
ability to set a gamma table, which is necessary for the C8 indexed
format.

This was tested on nouveau, and used for bring-up of the C8, XB30, and
FP16 formats on the NVIDIA hardware that supports these.

Ilia Mirkin (10):
  util: add C8 format, support it with SMPTE pattern
  util: fix MAKE_RGBA macro for 10bpp modes
  util: add gradient pattern
  util: add fp16 format support
  util: add cairo drawing for 30bpp formats when available
  modetest: don't pretend that atomic mode includes a format
  modetest: add an add_property_optional variant that does not print
    errors
  modetest: add C8 support to generate SMPTE pattern
  modetest: add the ability to specify fill patterns on the commandline
  modetest: add FP16 format support

 tests/modetest/buffers.c  |  13 ++
 tests/modetest/modetest.c | 109 ++++++++--
 tests/util/format.c       |   7 +
 tests/util/pattern.c      | 432 +++++++++++++++++++++++++++++++++++++-
 tests/util/pattern.h      |   7 +
 5 files changed, 543 insertions(+), 25 deletions(-)

Comments

Daniel Vetter June 3, 2019, 7:32 a.m. UTC | #1
On Sun, Jun 02, 2019 at 08:40:08PM -0400, Ilia Mirkin wrote:
> This series improves the pattern generation logic to support additional
> formats, as well as a new "gradient" pattern (see patch comments on why
> I found it useful).
> 
> Furthermore, these formats are piped through to modetest, including the
> ability to set a gamma table, which is necessary for the C8 indexed
> format.
> 
> This was tested on nouveau, and used for bring-up of the C8, XB30, and
> FP16 formats on the NVIDIA hardware that supports these.

Does nouveau also work with igt tests for this stuff? We do have support
for interactive testing (i.e. "human pls check yourself" kind of tests) in
igt, so ideally we could merge everything into one place. Long-term at
least ...
-Daniel

> 
> Ilia Mirkin (10):
>   util: add C8 format, support it with SMPTE pattern
>   util: fix MAKE_RGBA macro for 10bpp modes
>   util: add gradient pattern
>   util: add fp16 format support
>   util: add cairo drawing for 30bpp formats when available
>   modetest: don't pretend that atomic mode includes a format
>   modetest: add an add_property_optional variant that does not print
>     errors
>   modetest: add C8 support to generate SMPTE pattern
>   modetest: add the ability to specify fill patterns on the commandline
>   modetest: add FP16 format support
> 
>  tests/modetest/buffers.c  |  13 ++
>  tests/modetest/modetest.c | 109 ++++++++--
>  tests/util/format.c       |   7 +
>  tests/util/pattern.c      | 432 +++++++++++++++++++++++++++++++++++++-
>  tests/util/pattern.h      |   7 +
>  5 files changed, 543 insertions(+), 25 deletions(-)
> 
> -- 
> 2.21.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Ilia Mirkin June 3, 2019, 1:27 p.m. UTC | #2
On Mon, Jun 3, 2019 at 3:32 AM Daniel Vetter <daniel@ffwll.ch> wrote:
>
> On Sun, Jun 02, 2019 at 08:40:08PM -0400, Ilia Mirkin wrote:
> > This series improves the pattern generation logic to support additional
> > formats, as well as a new "gradient" pattern (see patch comments on why
> > I found it useful).
> >
> > Furthermore, these formats are piped through to modetest, including the
> > ability to set a gamma table, which is necessary for the C8 indexed
> > format.
> >
> > This was tested on nouveau, and used for bring-up of the C8, XB30, and
> > FP16 formats on the NVIDIA hardware that supports these.
>
> Does nouveau also work with igt tests for this stuff? We do have support
> for interactive testing (i.e. "human pls check yourself" kind of tests) in
> igt, so ideally we could merge everything into one place. Long-term at
> least ...

nouveau has no special exclusions for programs that start with the
letters "igt", so presumably it should be OK with the basic tests.
However it was my impression that igt was targeted at automated
testing, and all the tests basically required crc, which is
questionable whether it exists in the hw in a manner usable by such
tests, and definitely not supported by nouveau in any case. As a
result, I haven't really taken much of a look.

Having something flexible like modetest has been really useful in
development. Being able to run with different formats, messing with
resolutions, scaling parameters for overlays, different patterns --
these things have all been helpful in validating that the new features
implemented actually work as expected. I plan on extending it further
to cover HDR, as part of my bringup of HDR on nouveau.

As an example, pre-GF119 FP16 support expects a 0..1024-valued input
instead of 0..1 (something which we did not previously know). I was
able to guess that by changing the pattern in the code to generate
larger numbers, after seeing a black display with the 0..1 pattern. (I
may have also messed with the gamma ramp to see if it was "working" or
not - I forget already.) Having a tool that makes things like that
simple to investigate is pretty valuable to me.

  -ilia
Ilia Mirkin June 3, 2019, 8:57 p.m. UTC | #3
On Sun, Jun 2, 2019 at 8:40 PM Ilia Mirkin <imirkin@alum.mit.edu> wrote:
>
> This series improves the pattern generation logic to support additional
> formats, as well as a new "gradient" pattern (see patch comments on why
> I found it useful).
>
> Furthermore, these formats are piped through to modetest, including the
> ability to set a gamma table, which is necessary for the C8 indexed
> format.
>
> This was tested on nouveau, and used for bring-up of the C8, XB30, and
> FP16 formats on the NVIDIA hardware that supports these.

Just to follow up, I've successfully tested on an Intel SKL with C8
and XB30/XR30 as well (and confirmed that the GAMMA_LUT gets unset in
a sequence of C8 followed by XB30). FP16 was not available on the
kernel I am currently using (and perhaps not the HW?)

  -ilia

>
> Ilia Mirkin (10):
>   util: add C8 format, support it with SMPTE pattern
>   util: fix MAKE_RGBA macro for 10bpp modes
>   util: add gradient pattern
>   util: add fp16 format support
>   util: add cairo drawing for 30bpp formats when available
>   modetest: don't pretend that atomic mode includes a format
>   modetest: add an add_property_optional variant that does not print
>     errors
>   modetest: add C8 support to generate SMPTE pattern
>   modetest: add the ability to specify fill patterns on the commandline
>   modetest: add FP16 format support
>
>  tests/modetest/buffers.c  |  13 ++
>  tests/modetest/modetest.c | 109 ++++++++--
>  tests/util/format.c       |   7 +
>  tests/util/pattern.c      | 432 +++++++++++++++++++++++++++++++++++++-
>  tests/util/pattern.h      |   7 +
>  5 files changed, 543 insertions(+), 25 deletions(-)
>
> --
> 2.21.0
>
Ville Syrjälä June 4, 2019, 11:04 a.m. UTC | #4
On Mon, Jun 03, 2019 at 04:57:43PM -0400, Ilia Mirkin wrote:
> On Sun, Jun 2, 2019 at 8:40 PM Ilia Mirkin <imirkin@alum.mit.edu> wrote:
> >
> > This series improves the pattern generation logic to support additional
> > formats, as well as a new "gradient" pattern (see patch comments on why
> > I found it useful).
> >
> > Furthermore, these formats are piped through to modetest, including the
> > ability to set a gamma table, which is necessary for the C8 indexed
> > format.
> >
> > This was tested on nouveau, and used for bring-up of the C8, XB30, and
> > FP16 formats on the NVIDIA hardware that supports these.
> 
> Just to follow up, I've successfully tested on an Intel SKL with C8
> and XB30/XR30 as well (and confirmed that the GAMMA_LUT gets unset in
> a sequence of C8 followed by XB30). FP16 was not available on the
> kernel I am currently using (and perhaps not the HW?)

https://patchwork.freedesktop.org/series/61345/

or a slightly older version:
git://github.com/vsyrjala/linux.git fp16_scanout_4

in case you want to test it.

> 
>   -ilia
> 
> >
> > Ilia Mirkin (10):
> >   util: add C8 format, support it with SMPTE pattern
> >   util: fix MAKE_RGBA macro for 10bpp modes
> >   util: add gradient pattern
> >   util: add fp16 format support
> >   util: add cairo drawing for 30bpp formats when available
> >   modetest: don't pretend that atomic mode includes a format
> >   modetest: add an add_property_optional variant that does not print
> >     errors
> >   modetest: add C8 support to generate SMPTE pattern
> >   modetest: add the ability to specify fill patterns on the commandline
> >   modetest: add FP16 format support
> >
> >  tests/modetest/buffers.c  |  13 ++
> >  tests/modetest/modetest.c | 109 ++++++++--
> >  tests/util/format.c       |   7 +
> >  tests/util/pattern.c      | 432 +++++++++++++++++++++++++++++++++++++-
> >  tests/util/pattern.h      |   7 +
> >  5 files changed, 543 insertions(+), 25 deletions(-)
> >
> > --
> > 2.21.0
> >
Emil Velikov June 6, 2019, 3:54 p.m. UTC | #5
On Mon, 3 Jun 2019 at 01:40, Ilia Mirkin <imirkin@alum.mit.edu> wrote:
>
> This series improves the pattern generation logic to support additional
> formats, as well as a new "gradient" pattern (see patch comments on why
> I found it useful).
>
> Furthermore, these formats are piped through to modetest, including the
> ability to set a gamma table, which is necessary for the C8 indexed
> format.
>
> This was tested on nouveau, and used for bring-up of the C8, XB30, and
> FP16 formats on the NVIDIA hardware that supports these.
>
> Ilia Mirkin (10):
>   util: add C8 format, support it with SMPTE pattern
I did not verify the numbers in this patch, but it looks reasonable:
Acked-by: Emil Velikov <emil.velikov@collabora.com>

>   util: fix MAKE_RGBA macro for 10bpp modes
>   util: add gradient pattern
>   util: add fp16 format support
>   util: add cairo drawing for 30bpp formats when available
>   modetest: don't pretend that atomic mode includes a format
There a small, would be great but not required, comment here (part of
which you addressed with in 08/10)

>   modetest: add an add_property_optional variant that does not print
>     errors
>   modetest: add C8 support to generate SMPTE pattern
>   modetest: add the ability to specify fill patterns on the commandline
>   modetest: add FP16 format support
>
Patches 2-10 are
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>

-Emil
Emil Velikov June 6, 2019, 4:02 p.m. UTC | #6
On Thu, 6 Jun 2019 at 16:54, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>
> On Mon, 3 Jun 2019 at 01:40, Ilia Mirkin <imirkin@alum.mit.edu> wrote:
> >
> > This series improves the pattern generation logic to support additional
> > formats, as well as a new "gradient" pattern (see patch comments on why
> > I found it useful).
> >
> > Furthermore, these formats are piped through to modetest, including the
> > ability to set a gamma table, which is necessary for the C8 indexed
> > format.
> >
> > This was tested on nouveau, and used for bring-up of the C8, XB30, and
> > FP16 formats on the NVIDIA hardware that supports these.
> >
> > Ilia Mirkin (10):
> >   util: add C8 format, support it with SMPTE pattern
> I did not verify the numbers in this patch, but it looks reasonable:
> Acked-by: Emil Velikov <emil.velikov@collabora.com>
>
> >   util: fix MAKE_RGBA macro for 10bpp modes
> >   util: add gradient pattern
> >   util: add fp16 format support
> >   util: add cairo drawing for 30bpp formats when available
> >   modetest: don't pretend that atomic mode includes a format
> There a small, would be great but not required, comment here (part of
> which you addressed with in 08/10)
>
Grr scratch that part about 08/10 - I misread the format_str parsing.

-Emil