[igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests
Harry Wentland
hwentlan at amd.com
Thu Jan 2 23:03:17 UTC 2020
On 2020-01-02 5:59 p.m., Harry Wentland wrote:
> On 2019-12-12 10:03 a.m., Ville Syrjälä wrote:
>> On Wed, Dec 11, 2019 at 03:46:36PM -0500, sunpeng.li at amd.com wrote:
>>> From: Leo Li <sunpeng.li at amd.com>
>>>
>>> We'd like to test the hardware pipe's color management with 10bit
>>> surfaces.
>>
>> Why exactly? The pipe color management stuff doesn't care what
>> pixel format the plane used.
>
> Not sure how this works for Intel but for us there's a fair amount of
> logic between color management and the pixel format.
>
To clarify, Leo is still correct in that in AMD HW these shouldn't be
related but this doesn't really guarantee that the driver doesn't do
something funky here.
Harry
> In general, not sure if IGT should be designed based on assumptions of a
> certain KMS driver implementation.
>
> Harry
>
>>
>>> This change parameterizes the hardcoded formats within each
>>> test, and ennumerates the additional subtests within a for loop. To
>>> avoid renaming existing tests, the 10bpc tests will have '-10bpc'
>>> inserted after the pipe name, while the 8bpc test names remain
>>> unchanged.
>>>
>>> Signed-off-by: Leo Li <sunpeng.li at amd.com>
>>> ---
>>> tests/kms_color.c | 353 ++++++++++++++++++++++++++--------------------
>>> 1 file changed, 198 insertions(+), 155 deletions(-)
>>>
>>> diff --git a/tests/kms_color.c b/tests/kms_color.c
>>> index b4b578a7..3c76a0d2 100644
>>> --- a/tests/kms_color.c
>>> +++ b/tests/kms_color.c
>>> @@ -52,6 +52,12 @@ typedef struct {
>>> double coeffs[];
>>> } gamma_lut_t;
>>>
>>> +typedef struct {
>>> + uint32_t format;
>>> + int bpc;
>>> + char name[16];
>>> +} fb_format_t;
>>> +
>>> static void paint_gradient_rectangles(data_t *data,
>>> drmModeModeInfo *mode,
>>> color_t *colors,
>>> @@ -269,7 +275,8 @@ static void disable_prop(igt_pipe_t *pipe, enum igt_atomic_crtc_properties prop)
>>> * rectangles with linear degamma LUT.
>>> */
>>> static void test_pipe_degamma(data_t *data,
>>> - igt_plane_t *primary)
>>> + igt_plane_t *primary,
>>> + uint32_t fb_format)
>>> {
>>> igt_output_t *output;
>>> gamma_lut_t *degamma_linear, *degamma_full;
>>> @@ -301,7 +308,7 @@ static void test_pipe_degamma(data_t *data,
>>> fb_id = igt_create_fb(data->drm_fd,
>>> mode->hdisplay,
>>> mode->vdisplay,
>>> - DRM_FORMAT_XRGB8888,
>>> + fb_format,
>>> LOCAL_DRM_FORMAT_MOD_NONE,
>>> &fb);
>>> igt_assert(fb_id);
>>> @@ -309,7 +316,7 @@ static void test_pipe_degamma(data_t *data,
>>> fb_modeset_id = igt_create_fb(data->drm_fd,
>>> mode->hdisplay,
>>> mode->vdisplay,
>>> - DRM_FORMAT_XRGB8888,
>>> + fb_format,
>>> LOCAL_DRM_FORMAT_MOD_NONE,
>>> &fb_modeset);
>>> igt_assert(fb_modeset_id);
>>> @@ -356,7 +363,8 @@ static void test_pipe_degamma(data_t *data,
>>> * LUT and verify we have the same CRC as drawing solid color rectangles.
>>> */
>>> static void test_pipe_gamma(data_t *data,
>>> - igt_plane_t *primary)
>>> + igt_plane_t *primary,
>>> + uint32_t fb_format)
>>> {
>>> igt_output_t *output;
>>> gamma_lut_t *gamma_full;
>>> @@ -383,7 +391,7 @@ static void test_pipe_gamma(data_t *data,
>>> fb_id = igt_create_fb(data->drm_fd,
>>> mode->hdisplay,
>>> mode->vdisplay,
>>> - DRM_FORMAT_XRGB8888,
>>> + fb_format,
>>> LOCAL_DRM_FORMAT_MOD_NONE,
>>> &fb);
>>> igt_assert(fb_id);
>>> @@ -391,7 +399,7 @@ static void test_pipe_gamma(data_t *data,
>>> fb_modeset_id = igt_create_fb(data->drm_fd,
>>> mode->hdisplay,
>>> mode->vdisplay,
>>> - DRM_FORMAT_XRGB8888,
>>> + fb_format,
>>> LOCAL_DRM_FORMAT_MOD_NONE,
>>> &fb_modeset);
>>> igt_assert(fb_modeset_id);
>>> @@ -436,7 +444,8 @@ static void test_pipe_gamma(data_t *data,
>>> * with linear legacy gamma LUT.
>>> */
>>> static void test_pipe_legacy_gamma(data_t *data,
>>> - igt_plane_t *primary)
>>> + igt_plane_t *primary,
>>> + uint32_t fb_format)
>>> {
>>> igt_output_t *output;
>>> color_t red_green_blue[] = {
>>> @@ -469,7 +478,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>>> fb_id = igt_create_fb(data->drm_fd,
>>> mode->hdisplay,
>>> mode->vdisplay,
>>> - DRM_FORMAT_XRGB8888,
>>> + fb_format,
>>> LOCAL_DRM_FORMAT_MOD_NONE,
>>> &fb);
>>> igt_assert(fb_id);
>>> @@ -477,7 +486,7 @@ static void test_pipe_legacy_gamma(data_t *data,
>>> fb_modeset_id = igt_create_fb(data->drm_fd,
>>> mode->hdisplay,
>>> mode->vdisplay,
>>> - DRM_FORMAT_XRGB8888,
>>> + fb_format,
>>> LOCAL_DRM_FORMAT_MOD_NONE,
>>> &fb_modeset);
>>> igt_assert(fb_modeset_id);
>>> @@ -676,7 +685,8 @@ static bool test_pipe_ctm(data_t *data,
>>> igt_plane_t *primary,
>>> color_t *before,
>>> color_t *after,
>>> - double *ctm_matrix)
>>> + double *ctm_matrix,
>>> + uint32_t fb_format)
>>> {
>>> const double ctm_identity[] = {
>>> 1.0, 0.0, 0.0,
>>> @@ -705,7 +715,7 @@ static bool test_pipe_ctm(data_t *data,
>>> fb_id = igt_create_fb(data->drm_fd,
>>> mode->hdisplay,
>>> mode->vdisplay,
>>> - DRM_FORMAT_XRGB8888,
>>> + fb_format,
>>> LOCAL_DRM_FORMAT_MOD_NONE,
>>> &fb);
>>> igt_assert(fb_id);
>>> @@ -713,7 +723,7 @@ static bool test_pipe_ctm(data_t *data,
>>> fb_modeset_id = igt_create_fb(data->drm_fd,
>>> mode->hdisplay,
>>> mode->vdisplay,
>>> - DRM_FORMAT_XRGB8888,
>>> + fb_format,
>>> LOCAL_DRM_FORMAT_MOD_NONE,
>>> &fb_modeset);
>>> igt_assert(fb_modeset_id);
>>> @@ -780,7 +790,8 @@ static bool test_pipe_ctm(data_t *data,
>>> */
>>> #if 0
>>> static void test_pipe_limited_range_ctm(data_t *data,
>>> - igt_plane_t *primary)
>>> + igt_plane_t *primary,
>>> + uint32_t fb_format)
>>> {
>>> double limited_result = 235.0 / 255.0;
>>> color_t red_green_blue_limited[] = {
>>> @@ -821,7 +832,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>>> fb_id = igt_create_fb(data->drm_fd,
>>> mode->hdisplay,
>>> mode->vdisplay,
>>> - DRM_FORMAT_XRGB8888,
>>> + fb_format,
>>> LOCAL_DRM_FORMAT_MOD_NONE,
>>> &fb);
>>> igt_assert(fb_id);
>>> @@ -829,7 +840,7 @@ static void test_pipe_limited_range_ctm(data_t *data,
>>> fb_modeset_id = igt_create_fb(data->drm_fd,
>>> mode->hdisplay,
>>> mode->vdisplay,
>>> - DRM_FORMAT_XRGB8888,
>>> + fb_format,
>>> LOCAL_DRM_FORMAT_MOD_NONE,
>>> &fb_modeset);
>>> igt_assert(fb_modeset_id);
>>> @@ -878,13 +889,18 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>>> igt_pipe_t *pipe;
>>> igt_plane_t *primary;
>>> double delta;
>>> - int i;
>>> + int i, j;
>>> color_t red_green_blue[] = {
>>> { 1.0, 0.0, 0.0 },
>>> { 0.0, 1.0, 0.0 },
>>> { 0.0, 0.0, 1.0 }
>>> };
>>>
>>> + fb_format_t fb_formats[] = {
>>> + { DRM_FORMAT_XRGB8888, 8 , ""},
>>> + { DRM_FORMAT_XRGB2101010, 10 , "-10bpc"}
>>> + };
>>> +
>>> igt_fixture {
>>> igt_require_pipe_crc(data->drm_fd);
>>>
>>> @@ -916,162 +932,189 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>>> igt_display_require_output_on_pipe(&data->display, p);
>>> }
>>>
>>> - /* We assume an 8bits depth per color for degamma/gamma LUTs
>>> - * for CRC checks with framebuffer references. */
>>> - data->color_depth = 8;
>>> - delta = 1.0 / (1 << data->color_depth);
>>> -
>>> - igt_subtest_f("pipe-%s-ctm-red-to-blue", kmstest_pipe_name(p)) {
>>> - color_t blue_green_blue[] = {
>>> - { 0.0, 0.0, 1.0 },
>>> - { 0.0, 1.0, 0.0 },
>>> - { 0.0, 0.0, 1.0 }
>>> - };
>>> - double ctm[] = { 0.0, 0.0, 0.0,
>>> - 0.0, 1.0, 0.0,
>>> - 1.0, 0.0, 1.0 };
>>> - igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> - blue_green_blue, ctm));
>>> - }
>>> + /* Iterate over fb formats to test */
>>> + for (j = 0; j < ARRAY_SIZE(fb_formats); j++) {
>>> +
>>> + fb_format_t *fb_format = &fb_formats[j];
>>> + data->color_depth = fb_format->bpc;
>>> + delta = 1.0 / (1 << data->color_depth);
>>> +
>>> + igt_subtest_f("pipe-%s%s-ctm-red-to-blue", kmstest_pipe_name(p),
>>> + fb_format->name) {
>>> + color_t blue_green_blue[] = {
>>> + { 0.0, 0.0, 1.0 },
>>> + { 0.0, 1.0, 0.0 },
>>> + { 0.0, 0.0, 1.0 }
>>> + };
>>> + double ctm[] = { 0.0, 0.0, 0.0,
>>> + 0.0, 1.0, 0.0,
>>> + 1.0, 0.0, 1.0 };
>>> + igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> + blue_green_blue, ctm,
>>> + fb_format->format));
>>> + }
>>>
>>> - igt_subtest_f("pipe-%s-ctm-green-to-red", kmstest_pipe_name(p)) {
>>> - color_t red_red_blue[] = {
>>> - { 1.0, 0.0, 0.0 },
>>> - { 1.0, 0.0, 0.0 },
>>> - { 0.0, 0.0, 1.0 }
>>> - };
>>> - double ctm[] = { 1.0, 1.0, 0.0,
>>> - 0.0, 0.0, 0.0,
>>> - 0.0, 0.0, 1.0 };
>>> - igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> - red_red_blue, ctm));
>>> - }
>>> + igt_subtest_f("pipe-%s%s-ctm-green-to-red",
>>> + kmstest_pipe_name(p), fb_format->name) {
>>> + color_t red_red_blue[] = {
>>> + { 1.0, 0.0, 0.0 },
>>> + { 1.0, 0.0, 0.0 },
>>> + { 0.0, 0.0, 1.0 }
>>> + };
>>> + double ctm[] = { 1.0, 1.0, 0.0,
>>> + 0.0, 0.0, 0.0,
>>> + 0.0, 0.0, 1.0 };
>>> + igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> + red_red_blue, ctm,
>>> + fb_format->format));
>>> + }
>>>
>>> - igt_subtest_f("pipe-%s-ctm-blue-to-red", kmstest_pipe_name(p)) {
>>> - color_t red_green_red[] = {
>>> - { 1.0, 0.0, 0.0 },
>>> - { 0.0, 1.0, 0.0 },
>>> - { 1.0, 0.0, 0.0 }
>>> - };
>>> - double ctm[] = { 1.0, 0.0, 1.0,
>>> - 0.0, 1.0, 0.0,
>>> - 0.0, 0.0, 0.0 };
>>> - igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> - red_green_red, ctm));
>>> - }
>>> + igt_subtest_f("pipe-%s%s-ctm-blue-to-red", kmstest_pipe_name(p),
>>> + fb_format->name) {
>>> + color_t red_green_red[] = {
>>> + { 1.0, 0.0, 0.0 },
>>> + { 0.0, 1.0, 0.0 },
>>> + { 1.0, 0.0, 0.0 }
>>> + };
>>> + double ctm[] = { 1.0, 0.0, 1.0,
>>> + 0.0, 1.0, 0.0,
>>> + 0.0, 0.0, 0.0 };
>>> + igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> + red_green_red, ctm,
>>> + fb_format->format));
>>> + }
>>>
>>> - /* We tests a few values around the expected result because
>>> - * the it depends on the hardware we're dealing with, we can
>>> - * either get clamped or rounded values and we also need to
>>> - * account for odd number of items in the LUTs. */
>>> - igt_subtest_f("pipe-%s-ctm-0-25", kmstest_pipe_name(p)) {
>>> - color_t expected_colors[] = {
>>> - { 0.0, }, { 0.0, }, { 0.0, }
>>> - };
>>> - double ctm[] = { 0.25, 0.0, 0.0,
>>> - 0.0, 0.25, 0.0,
>>> - 0.0, 0.0, 0.25 };
>>> - bool success = false;
>>> -
>>> - for (i = 0; i < 5; i++) {
>>> - expected_colors[0].r =
>>> - expected_colors[1].g =
>>> - expected_colors[2].b =
>>> - 0.25 + delta * (i - 2);
>>> - success |= test_pipe_ctm(data, primary,
>>> - red_green_blue,
>>> - expected_colors, ctm);
>>> + /* We tests a few values around the expected result because
>>> + * the it depends on the hardware we're dealing with, we can
>>> + * either get clamped or rounded values and we also need to
>>> + * account for odd number of items in the LUTs. */
>>> + igt_subtest_f("pipe-%s%s-ctm-0-25", kmstest_pipe_name(p),
>>> + fb_format->name) {
>>> + color_t expected_colors[] = {
>>> + { 0.0, }, { 0.0, }, { 0.0, }
>>> + };
>>> + double ctm[] = { 0.25, 0.0, 0.0,
>>> + 0.0, 0.25, 0.0,
>>> + 0.0, 0.0, 0.25 };
>>> + bool success = false;
>>> +
>>> + for (i = 0; i < 5; i++) {
>>> + expected_colors[0].r =
>>> + expected_colors[1].g =
>>> + expected_colors[2].b =
>>> + 0.25 + delta * (i - 2);
>>> + success |= test_pipe_ctm(data, primary,
>>> + red_green_blue,
>>> + expected_colors, ctm,
>>> + fb_format->format);
>>> + }
>>> + igt_assert(success);
>>> }
>>> - igt_assert(success);
>>> - }
>>>
>>> - igt_subtest_f("pipe-%s-ctm-0-5", kmstest_pipe_name(p)) {
>>> - color_t expected_colors[] = {
>>> - { 0.0, }, { 0.0, }, { 0.0, }
>>> - };
>>> - double ctm[] = { 0.5, 0.0, 0.0,
>>> - 0.0, 0.5, 0.0,
>>> - 0.0, 0.0, 0.5 };
>>> - bool success = false;
>>> -
>>> - for (i = 0; i < 5; i++) {
>>> - expected_colors[0].r =
>>> - expected_colors[1].g =
>>> - expected_colors[2].b =
>>> - 0.5 + delta * (i - 2);
>>> - success |= test_pipe_ctm(data, primary,
>>> - red_green_blue,
>>> - expected_colors, ctm);
>>> + igt_subtest_f("pipe-%s%s-ctm-0-5", kmstest_pipe_name(p),
>>> + fb_format->name) {
>>> + color_t expected_colors[] = {
>>> + { 0.0, }, { 0.0, }, { 0.0, }
>>> + };
>>> + double ctm[] = { 0.5, 0.0, 0.0,
>>> + 0.0, 0.5, 0.0,
>>> + 0.0, 0.0, 0.5 };
>>> + bool success = false;
>>> +
>>> + for (i = 0; i < 5; i++) {
>>> + expected_colors[0].r =
>>> + expected_colors[1].g =
>>> + expected_colors[2].b =
>>> + 0.5 + delta * (i - 2);
>>> + success |= test_pipe_ctm(data, primary,
>>> + red_green_blue,
>>> + expected_colors, ctm,
>>> + fb_format->format);
>>> + }
>>> + igt_assert(success);
>>> }
>>> - igt_assert(success);
>>> - }
>>>
>>> - igt_subtest_f("pipe-%s-ctm-0-75", kmstest_pipe_name(p)) {
>>> - color_t expected_colors[] = {
>>> - { 0.0, }, { 0.0, }, { 0.0, }
>>> - };
>>> - double ctm[] = { 0.75, 0.0, 0.0,
>>> - 0.0, 0.75, 0.0,
>>> - 0.0, 0.0, 0.75 };
>>> - bool success = false;
>>> -
>>> - for (i = 0; i < 7; i++) {
>>> - expected_colors[0].r =
>>> - expected_colors[1].g =
>>> - expected_colors[2].b =
>>> - 0.75 + delta * (i - 3);
>>> - success |= test_pipe_ctm(data, primary,
>>> - red_green_blue,
>>> - expected_colors, ctm);
>>> + igt_subtest_f("pipe-%s%s-ctm-0-75", kmstest_pipe_name(p),
>>> + fb_format->name) {
>>> + color_t expected_colors[] = {
>>> + { 0.0, }, { 0.0, }, { 0.0, }
>>> + };
>>> + double ctm[] = { 0.75, 0.0, 0.0,
>>> + 0.0, 0.75, 0.0,
>>> + 0.0, 0.0, 0.75 };
>>> + bool success = false;
>>> +
>>> + for (i = 0; i < 7; i++) {
>>> + expected_colors[0].r =
>>> + expected_colors[1].g =
>>> + expected_colors[2].b =
>>> + 0.75 + delta * (i - 3);
>>> + success |= test_pipe_ctm(data, primary,
>>> + red_green_blue,
>>> + expected_colors, ctm,
>>> + fb_format->format);
>>> + }
>>> + igt_assert(success);
>>> }
>>> - igt_assert(success);
>>> - }
>>>
>>> - igt_subtest_f("pipe-%s-ctm-max", kmstest_pipe_name(p)) {
>>> - color_t full_rgb[] = {
>>> - { 1.0, 0.0, 0.0 },
>>> - { 0.0, 1.0, 0.0 },
>>> - { 0.0, 0.0, 1.0 }
>>> - };
>>> - double ctm[] = { 100.0, 0.0, 0.0,
>>> - 0.0, 100.0, 0.0,
>>> - 0.0, 0.0, 100.0 };
>>> -
>>> - /* CherryView generates values on 10bits that we
>>> - * produce with an 8 bits per color framebuffer. */
>>> - igt_require(!IS_CHERRYVIEW(data->devid));
>>> -
>>> - igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> - full_rgb, ctm));
>>> - }
>>> + igt_subtest_f("pipe-%s%s-ctm-max", kmstest_pipe_name(p),
>>> + fb_format->name) {
>>> + color_t full_rgb[] = {
>>> + { 1.0, 0.0, 0.0 },
>>> + { 0.0, 1.0, 0.0 },
>>> + { 0.0, 0.0, 1.0 }
>>> + };
>>> + double ctm[] = { 100.0, 0.0, 0.0,
>>> + 0.0, 100.0, 0.0,
>>> + 0.0, 0.0, 100.0 };
>>> +
>>> + /* CherryView generates values on 10bits that we
>>> + * produce with an 8 bits per color framebuffer. */
>>> + igt_require(!IS_CHERRYVIEW(data->devid));
>>> +
>>> + igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> + full_rgb, ctm,
>>> + fb_format->format));
>>> + }
>>>
>>> - igt_subtest_f("pipe-%s-ctm-negative", kmstest_pipe_name(p)) {
>>> - color_t all_black[] = {
>>> - { 0.0, 0.0, 0.0 },
>>> - { 0.0, 0.0, 0.0 },
>>> - { 0.0, 0.0, 0.0 }
>>> - };
>>> - double ctm[] = { -1.0, 0.0, 0.0,
>>> - 0.0, -1.0, 0.0,
>>> - 0.0, 0.0, -1.0 };
>>> - igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> - all_black, ctm));
>>> - }
>>> + igt_subtest_f("pipe-%s%s-ctm-negative", kmstest_pipe_name(p),
>>> + fb_format->name) {
>>> + color_t all_black[] = {
>>> + { 0.0, 0.0, 0.0 },
>>> + { 0.0, 0.0, 0.0 },
>>> + { 0.0, 0.0, 0.0 }
>>> + };
>>> + double ctm[] = { -1.0, 0.0, 0.0,
>>> + 0.0, -1.0, 0.0,
>>> + 0.0, 0.0, -1.0 };
>>> + igt_assert(test_pipe_ctm(data, primary, red_green_blue,
>>> + all_black, ctm,
>>> + fb_format->format));
>>> + }
>>>
>>> #if 0
>>> - igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p))
>>> - test_pipe_limited_range_ctm(data, primary);
>>> + igt_subtest_f("pipe-%s-ctm-limited-range%s",
>>> + kmstest_pipe_name(p), fb_format->name)
>>> + test_pipe_limited_range_ctm(data, primary,
>>> + fb_format->format);
>>> #endif
>>>
>>> - igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p))
>>> - test_pipe_degamma(data, primary);
>>> + igt_subtest_f("pipe-%s%s-degamma", kmstest_pipe_name(p),
>>> + fb_format->name)
>>> + test_pipe_degamma(data, primary, fb_format->format);
>>>
>>> - igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p))
>>> - test_pipe_gamma(data, primary);
>>> + igt_subtest_f("pipe-%s%s-gamma", kmstest_pipe_name(p),
>>> + fb_format->name)
>>> + test_pipe_gamma(data, primary, fb_format->format);
>>>
>>> - igt_subtest_f("pipe-%s-legacy-gamma", kmstest_pipe_name(p))
>>> - test_pipe_legacy_gamma(data, primary);
>>> + igt_subtest_f("pipe-%s%s-legacy-gamma", kmstest_pipe_name(p),
>>> + fb_format->name)
>>> + test_pipe_legacy_gamma(data, primary,
>>> + fb_format->format);
>>>
>>> + } // End of fb_formats iterator
>>> +
>>> + data->color_depth = 8;
>>> igt_subtest_f("pipe-%s-legacy-gamma-reset", kmstest_pipe_name(p))
>>> test_pipe_legacy_gamma_reset(data, primary);
>>>
>>> --
>>> 2.24.0
>>>
>>> _______________________________________________
>>> igt-dev mailing list
>>> igt-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/igt-dev
>>
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
>
More information about the igt-dev
mailing list