* [igt-dev] [PATCH i-g-t v3 0/3] validate color tests using chamelium. @ 2020-01-21 5:54 Kunal Joshi 2020-01-21 5:54 ` [igt-dev] [PATCH i-g-t v3 1/3] lib/igt_chamelium Added chamelium_frame_match_or_dump which returns bool that the captured frame matches Kunal Joshi ` (4 more replies) 0 siblings, 5 replies; 11+ messages in thread From: Kunal Joshi @ 2020-01-21 5:54 UTC (permalink / raw) To: igt-dev; +Cc: Kunal Joshi, ville.syrjala, petri.latvala, daniel.vetter For gen11+ platforms, there are frequent crc mismatch issues observed in color tests. This is happening due to hardware limitation (pipe rounding). One of the solutions to fix this is by rewriting color tests and making them compatible with chamelium. In this patch series, color tests are modified to have frame dump comparison instead of crc comparison using chamelium hooks. This will be useful even for future platforms. Also, with this approach we could enable limited-range subtest which was commented in kms_color because of crc mismatch. Kunal Joshi (3): lib/igt_chamelium Added chamelium_frame_match_or_dump which returns bool that the captured frame matches lib/igt_color Moved kms_color functions to lib/igt_color to git avoid code duplication tests/kms_color_chamelium: add subtests to validate color lib/Makefile.sources | 2 + lib/igt_chamelium.c | 65 ++++ lib/igt_chamelium.h | 5 + lib/igt_color.c | 386 ++++++++++++++++++++++ lib/igt_color.h | 105 ++++++ tests/Makefile.am | 1 + tests/kms_color_chamelium.c | 759 ++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 1323 insertions(+) create mode 100644 lib/igt_color.c create mode 100644 lib/igt_color.h create mode 100644 tests/kms_color_chamelium.c -- 2.7.4 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* [igt-dev] [PATCH i-g-t v3 1/3] lib/igt_chamelium Added chamelium_frame_match_or_dump which returns bool that the captured frame matches 2020-01-21 5:54 [igt-dev] [PATCH i-g-t v3 0/3] validate color tests using chamelium Kunal Joshi @ 2020-01-21 5:54 ` Kunal Joshi 2020-01-21 13:29 ` Petri Latvala 2020-01-21 5:54 ` [igt-dev] [PATCH i-g-t v3 3/3] tests/kms_color_chamelium: add subtests to validate color Kunal Joshi ` (3 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Kunal Joshi @ 2020-01-21 5:54 UTC (permalink / raw) To: igt-dev; +Cc: Kunal Joshi, ville.syrjala, petri.latvala, daniel.vetter Added chamelium_frame_match_or_dump which returns bool that the captured frame matches with reference framebuffer. (v2) Removed previously added function chamelium_assert_frame_dump_eq. (v3) No change. Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com> Signed-off-by: Swati Sharma <swati2.sharma@intel.com> Suggested-by: Uma Shankar <uma.shankar@intel.com> --- lib/igt_chamelium.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/igt_chamelium.h | 5 +++++ 2 files changed, 70 insertions(+) diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c index 9971f51..db1f2b6 100644 --- a/lib/igt_chamelium.c +++ b/lib/igt_chamelium.c @@ -1632,6 +1632,71 @@ void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium, } /** + * chamelium_assert_frame_match_or_dump: + * @chamelium: The chamelium instance the frame dump belongs to + * @frame: The chamelium frame dump to match + * @fb: pointer to an #igt_fb structure + * @check: the type of frame matching check to use + * + * Returns bool that the provided captured frame matches the reference + * frame from the framebuffer. If they do not, this saves the reference + * and captured frames to a png file. + */ +bool chamelium_frame_match_or_dump(struct chamelium *chamelium, + struct chamelium_port *port, + const struct chamelium_frame_dump *frame, + struct igt_fb *fb, + enum chamelium_check check) +{ + cairo_surface_t *reference; + cairo_surface_t *capture; + igt_crc_t *reference_crc; + igt_crc_t *capture_crc; + bool match; + + /* Grab the reference frame from framebuffer */ + reference = igt_get_cairo_surface(chamelium->drm_fd, fb); + + /* Grab the captured frame from chamelium */ + capture = convert_frame_dump_argb32(frame); + + switch (check) { + case CHAMELIUM_CHECK_ANALOG: + match = igt_check_analog_frame_match(reference, capture); + break; + case CHAMELIUM_CHECK_CHECKERBOARD: + match = igt_check_checkerboard_frame_match(reference, capture); + break; + default: + igt_assert(false); + } + + if (!match && igt_frame_dump_is_enabled()) { + reference_crc = malloc(sizeof(igt_crc_t)); + igt_assert(reference_crc); + + /* Calculate the reference frame CRC. */ + chamelium_do_calculate_fb_crc(reference, reference_crc); + + /* Get the captured frame CRC from the Chamelium. */ + capture_crc = chamelium_get_crc_for_area(chamelium, port, 0, 0, + 0, 0); + igt_assert(capture_crc); + + compared_frames_dump(reference, capture, reference_crc, + capture_crc); + + free(reference_crc); + free(capture_crc); + } + + cairo_surface_destroy(reference); + cairo_surface_destroy(capture); + + return match; +} + +/** * chamelium_analog_frame_crop: * @chamelium: The Chamelium instance to use * @dump: The chamelium frame dump to crop diff --git a/lib/igt_chamelium.h b/lib/igt_chamelium.h index 08705a9..d03c924 100644 --- a/lib/igt_chamelium.h +++ b/lib/igt_chamelium.h @@ -204,6 +204,11 @@ void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium, const struct chamelium_frame_dump *frame, struct igt_fb *fb, enum chamelium_check check); +bool chamelium_frame_match_or_dump(struct chamelium *chamelium, + struct chamelium_port *port, + const struct chamelium_frame_dump *frame, + struct igt_fb *fb, + enum chamelium_check check); void chamelium_crop_analog_frame(struct chamelium_frame_dump *dump, int width, int height); void chamelium_destroy_frame_dump(struct chamelium_frame_dump *dump); -- 2.7.4 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v3 1/3] lib/igt_chamelium Added chamelium_frame_match_or_dump which returns bool that the captured frame matches 2020-01-21 5:54 ` [igt-dev] [PATCH i-g-t v3 1/3] lib/igt_chamelium Added chamelium_frame_match_or_dump which returns bool that the captured frame matches Kunal Joshi @ 2020-01-21 13:29 ` Petri Latvala 2020-01-22 3:01 ` Kunal Joshi 0 siblings, 1 reply; 11+ messages in thread From: Petri Latvala @ 2020-01-21 13:29 UTC (permalink / raw) To: Kunal Joshi; +Cc: ville.syrjala, igt-dev, daniel.vetter On Tue, Jan 21, 2020 at 11:24:13AM +0530, Kunal Joshi wrote: > Added chamelium_frame_match_or_dump which returns bool that the captured > frame matches with reference framebuffer. > > (v2) > Removed previously added function chamelium_assert_frame_dump_eq. > > (v3) > No change. > > Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com> > Signed-off-by: Swati Sharma <swati2.sharma@intel.com> > Suggested-by: Uma Shankar <uma.shankar@intel.com> > --- > lib/igt_chamelium.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > lib/igt_chamelium.h | 5 +++++ > 2 files changed, 70 insertions(+) > > diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c > index 9971f51..db1f2b6 100644 > --- a/lib/igt_chamelium.c > +++ b/lib/igt_chamelium.c > @@ -1632,6 +1632,71 @@ void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium, > } > > /** > + * chamelium_assert_frame_match_or_dump: > + * @chamelium: The chamelium instance the frame dump belongs to > + * @frame: The chamelium frame dump to match > + * @fb: pointer to an #igt_fb structure > + * @check: the type of frame matching check to use > + * > + * Returns bool that the provided captured frame matches the reference > + * frame from the framebuffer. If they do not, this saves the reference > + * and captured frames to a png file. > + */ > +bool chamelium_frame_match_or_dump(struct chamelium *chamelium, > + struct chamelium_port *port, > + const struct chamelium_frame_dump *frame, > + struct igt_fb *fb, > + enum chamelium_check check) > +{ > + cairo_surface_t *reference; > + cairo_surface_t *capture; > + igt_crc_t *reference_crc; > + igt_crc_t *capture_crc; > + bool match; > + > + /* Grab the reference frame from framebuffer */ > + reference = igt_get_cairo_surface(chamelium->drm_fd, fb); > + > + /* Grab the captured frame from chamelium */ > + capture = convert_frame_dump_argb32(frame); > + > + switch (check) { > + case CHAMELIUM_CHECK_ANALOG: > + match = igt_check_analog_frame_match(reference, capture); > + break; > + case CHAMELIUM_CHECK_CHECKERBOARD: > + match = igt_check_checkerboard_frame_match(reference, capture); > + break; > + default: > + igt_assert(false); > + } > + > + if (!match && igt_frame_dump_is_enabled()) { > + reference_crc = malloc(sizeof(igt_crc_t)); > + igt_assert(reference_crc); > + > + /* Calculate the reference frame CRC. */ > + chamelium_do_calculate_fb_crc(reference, reference_crc); > + > + /* Get the captured frame CRC from the Chamelium. */ > + capture_crc = chamelium_get_crc_for_area(chamelium, port, 0, 0, > + 0, 0); > + igt_assert(capture_crc); > + > + compared_frames_dump(reference, capture, reference_crc, > + capture_crc); > + > + free(reference_crc); > + free(capture_crc); > + } > + > + cairo_surface_destroy(reference); > + cairo_surface_destroy(capture); > + > + return match; > +} This copy of chamelium_assert_frame_match_or_dump is unnecessary. The typical structure is that we have a bool-returning function for code that wants to do its own checks afterwards, and another one that 1) calls the bool-returning function 2) asserts success. Like so: void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium, const struct chamelium_frame_dump *frame, struct igt_fb *fb, enum chamelium_check check) { igt_assert(chamelium_frame_match_or_dump(chamelium, frame, fb, check)); } -- Petri Latvala _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v3 1/3] lib/igt_chamelium Added chamelium_frame_match_or_dump which returns bool that the captured frame matches 2020-01-21 13:29 ` Petri Latvala @ 2020-01-22 3:01 ` Kunal Joshi 2020-01-22 10:34 ` Petri Latvala 0 siblings, 1 reply; 11+ messages in thread From: Kunal Joshi @ 2020-01-22 3:01 UTC (permalink / raw) To: Petri Latvala; +Cc: igt-dev On 2020-01-21 at 15:29:48 +0200, Petri Latvala wrote: > On Tue, Jan 21, 2020 at 11:24:13AM +0530, Kunal Joshi wrote: > > Added chamelium_frame_match_or_dump which returns bool that the captured > > frame matches with reference framebuffer. > > > > (v2) > > Removed previously added function chamelium_assert_frame_dump_eq. > > > > (v3) > > No change. > > > > Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com> > > Signed-off-by: Swati Sharma <swati2.sharma@intel.com> > > Suggested-by: Uma Shankar <uma.shankar@intel.com> > > --- > > lib/igt_chamelium.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > > lib/igt_chamelium.h | 5 +++++ > > 2 files changed, 70 insertions(+) > > > > diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c > > index 9971f51..db1f2b6 100644 > > --- a/lib/igt_chamelium.c > > +++ b/lib/igt_chamelium.c > > @@ -1632,6 +1632,71 @@ void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium, > > } > > > > /** > > + * chamelium_assert_frame_match_or_dump: > > + * @chamelium: The chamelium instance the frame dump belongs to > > + * @frame: The chamelium frame dump to match > > + * @fb: pointer to an #igt_fb structure > > + * @check: the type of frame matching check to use > > + * > > + * Returns bool that the provided captured frame matches the reference > > + * frame from the framebuffer. If they do not, this saves the reference > > + * and captured frames to a png file. > > + */ > > +bool chamelium_frame_match_or_dump(struct chamelium *chamelium, > > + struct chamelium_port *port, > > + const struct chamelium_frame_dump *frame, > > + struct igt_fb *fb, > > + enum chamelium_check check) > > +{ > > + cairo_surface_t *reference; > > + cairo_surface_t *capture; > > + igt_crc_t *reference_crc; > > + igt_crc_t *capture_crc; > > + bool match; > > + > > + /* Grab the reference frame from framebuffer */ > > + reference = igt_get_cairo_surface(chamelium->drm_fd, fb); > > + > > + /* Grab the captured frame from chamelium */ > > + capture = convert_frame_dump_argb32(frame); > > + > > + switch (check) { > > + case CHAMELIUM_CHECK_ANALOG: > > + match = igt_check_analog_frame_match(reference, capture); > > + break; > > + case CHAMELIUM_CHECK_CHECKERBOARD: > > + match = igt_check_checkerboard_frame_match(reference, capture); > > + break; > > + default: > > + igt_assert(false); > > + } > > + > > + if (!match && igt_frame_dump_is_enabled()) { > > + reference_crc = malloc(sizeof(igt_crc_t)); > > + igt_assert(reference_crc); > > + > > + /* Calculate the reference frame CRC. */ > > + chamelium_do_calculate_fb_crc(reference, reference_crc); > > + > > + /* Get the captured frame CRC from the Chamelium. */ > > + capture_crc = chamelium_get_crc_for_area(chamelium, port, 0, 0, > > + 0, 0); > > + igt_assert(capture_crc); > > + > > + compared_frames_dump(reference, capture, reference_crc, > > + capture_crc); > > + > > + free(reference_crc); > > + free(capture_crc); > > + } > > + > > + cairo_surface_destroy(reference); > > + cairo_surface_destroy(capture); > > + > > + return match; > > +} > > This copy of chamelium_assert_frame_match_or_dump is > unnecessary. The typical structure is that we have a bool-returning > function for code that wants to do its own checks afterwards, and > another one that 1) calls the bool-returning function 2) asserts > success. Like so: > > Petri if you see the function test_pipe_ctm, we loop for different delta values If the of the delta value has a match then only we assert, I think chamelium_frame_dump_match returning a bool value is required, I will use chamelium_assert_frame_match_or_dump in the rest of the functions where we need to assert without any further checks. Thanks and regards Kunal > void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium, > const struct chamelium_frame_dump *frame, > struct igt_fb *fb, > enum chamelium_check check) > { > igt_assert(chamelium_frame_match_or_dump(chamelium, frame, fb, check)); > } > > > > > -- > Petri Latvala _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v3 1/3] lib/igt_chamelium Added chamelium_frame_match_or_dump which returns bool that the captured frame matches 2020-01-22 3:01 ` Kunal Joshi @ 2020-01-22 10:34 ` Petri Latvala 0 siblings, 0 replies; 11+ messages in thread From: Petri Latvala @ 2020-01-22 10:34 UTC (permalink / raw) To: Kunal Joshi; +Cc: igt-dev On Wed, Jan 22, 2020 at 08:31:47AM +0530, Kunal Joshi wrote: > On 2020-01-21 at 15:29:48 +0200, Petri Latvala wrote: > > On Tue, Jan 21, 2020 at 11:24:13AM +0530, Kunal Joshi wrote: > > > Added chamelium_frame_match_or_dump which returns bool that the captured > > > frame matches with reference framebuffer. > > > > > > (v2) > > > Removed previously added function chamelium_assert_frame_dump_eq. > > > > > > (v3) > > > No change. > > > > > > Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com> > > > Signed-off-by: Swati Sharma <swati2.sharma@intel.com> > > > Suggested-by: Uma Shankar <uma.shankar@intel.com> > > > --- > > > lib/igt_chamelium.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > lib/igt_chamelium.h | 5 +++++ > > > 2 files changed, 70 insertions(+) > > > > > > diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c > > > index 9971f51..db1f2b6 100644 > > > --- a/lib/igt_chamelium.c > > > +++ b/lib/igt_chamelium.c > > > @@ -1632,6 +1632,71 @@ void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium, > > > } > > > > > > /** > > > + * chamelium_assert_frame_match_or_dump: > > > + * @chamelium: The chamelium instance the frame dump belongs to > > > + * @frame: The chamelium frame dump to match > > > + * @fb: pointer to an #igt_fb structure > > > + * @check: the type of frame matching check to use > > > + * > > > + * Returns bool that the provided captured frame matches the reference > > > + * frame from the framebuffer. If they do not, this saves the reference > > > + * and captured frames to a png file. > > > + */ > > > +bool chamelium_frame_match_or_dump(struct chamelium *chamelium, > > > + struct chamelium_port *port, > > > + const struct chamelium_frame_dump *frame, > > > + struct igt_fb *fb, > > > + enum chamelium_check check) > > > +{ > > > + cairo_surface_t *reference; > > > + cairo_surface_t *capture; > > > + igt_crc_t *reference_crc; > > > + igt_crc_t *capture_crc; > > > + bool match; > > > + > > > + /* Grab the reference frame from framebuffer */ > > > + reference = igt_get_cairo_surface(chamelium->drm_fd, fb); > > > + > > > + /* Grab the captured frame from chamelium */ > > > + capture = convert_frame_dump_argb32(frame); > > > + > > > + switch (check) { > > > + case CHAMELIUM_CHECK_ANALOG: > > > + match = igt_check_analog_frame_match(reference, capture); > > > + break; > > > + case CHAMELIUM_CHECK_CHECKERBOARD: > > > + match = igt_check_checkerboard_frame_match(reference, capture); > > > + break; > > > + default: > > > + igt_assert(false); > > > + } > > > + > > > + if (!match && igt_frame_dump_is_enabled()) { > > > + reference_crc = malloc(sizeof(igt_crc_t)); > > > + igt_assert(reference_crc); > > > + > > > + /* Calculate the reference frame CRC. */ > > > + chamelium_do_calculate_fb_crc(reference, reference_crc); > > > + > > > + /* Get the captured frame CRC from the Chamelium. */ > > > + capture_crc = chamelium_get_crc_for_area(chamelium, port, 0, 0, > > > + 0, 0); > > > + igt_assert(capture_crc); > > > + > > > + compared_frames_dump(reference, capture, reference_crc, > > > + capture_crc); > > > + > > > + free(reference_crc); > > > + free(capture_crc); > > > + } > > > + > > > + cairo_surface_destroy(reference); > > > + cairo_surface_destroy(capture); > > > + > > > + return match; > > > +} > > > > This copy of chamelium_assert_frame_match_or_dump is > > unnecessary. The typical structure is that we have a bool-returning > > function for code that wants to do its own checks afterwards, and > > another one that 1) calls the bool-returning function 2) asserts > > success. Like so: > > > > > Petri if you see the function test_pipe_ctm, we loop for different > delta values If the of the delta value has a match then only we assert, > I think chamelium_frame_dump_match returning a bool value is required, > I will use chamelium_assert_frame_match_or_dump in the rest of > the functions where we need to assert without any further checks. I only meant that you don't need to copy the function body to get those two different functions. The asserting function can be implemented by calling the other one and asserting. -- Petri Latvala _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* [igt-dev] [PATCH i-g-t v3 3/3] tests/kms_color_chamelium: add subtests to validate color 2020-01-21 5:54 [igt-dev] [PATCH i-g-t v3 0/3] validate color tests using chamelium Kunal Joshi 2020-01-21 5:54 ` [igt-dev] [PATCH i-g-t v3 1/3] lib/igt_chamelium Added chamelium_frame_match_or_dump which returns bool that the captured frame matches Kunal Joshi @ 2020-01-21 5:54 ` Kunal Joshi 2020-01-21 13:51 ` Petri Latvala [not found] ` <1579586055-27583-3-git-send-email-kunal1.joshi@intel.com> ` (2 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Kunal Joshi @ 2020-01-21 5:54 UTC (permalink / raw) To: igt-dev; +Cc: Kunal Joshi, ville.syrjala, petri.latvala, daniel.vetter To validate color subtests using chamelium, subtests modified to do frame dump comparison instead of crc comparison. Tests require chamelium and will validate color features at pipe level. (v2) Comparing framedump with framebuffer reference instead of comparing two framedump. (v3) Moved common functions with kms_color to lib/igt_color Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com> Signed-off-by: Swati Sharma <swati2.sharma@intel.com> Suggested-by: Uma Shankar <uma.shankar@intel.com> --- tests/Makefile.am | 1 + tests/kms_color_chamelium.c | 759 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 760 insertions(+) create mode 100644 tests/kms_color_chamelium.c diff --git a/tests/Makefile.am b/tests/Makefile.am index fc30524..50fc989 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -13,6 +13,7 @@ endif if HAVE_CHAMELIUM TESTS_progs += \ kms_chamelium \ + kms_color_chamelium \ $(NULL) endif diff --git a/tests/kms_color_chamelium.c b/tests/kms_color_chamelium.c new file mode 100644 index 0000000..38d8666 --- /dev/null +++ b/tests/kms_color_chamelium.c @@ -0,0 +1,759 @@ +/* + * Copyright © 2020 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + */ + +#include "igt_color.h" + +IGT_TEST_DESCRIPTION("Test Color Features at Pipe level"); + +/* + * Draw 3 gradient rectangles in red, green and blue, with a maxed out + * degamma LUT and verify we have the same frame dump as drawing solid color + * rectangles with linear degamma LUT. + */ +static void test_pipe_degamma(data_t *data, + igt_plane_t *primary) +{ + igt_output_t *output; + gamma_lut_t *degamma_linear, *degamma_full; + gamma_lut_t *gamma_linear; + color_t red_green_blue[] = { + { 1.0, 0.0, 0.0 }, + { 0.0, 1.0, 0.0 }, + { 0.0, 0.0, 1.0 } + }; + + int i; + struct chamelium_port *port; + char *connected_ports[4]; + bool valid_output = false; + + for (i = 0; i < data->port_count; i++) + connected_ports[i] = + (char *) chamelium_port_get_name(data->ports[i]); + + igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_DEGAMMA_LUT)); + igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_GAMMA_LUT)); + + degamma_linear = generate_table(data->degamma_lut_size, 1.0); + degamma_full = generate_table_max(data->degamma_lut_size); + + gamma_linear = generate_table(data->gamma_lut_size, 1.0); + + for_each_valid_output_on_pipe(&data->display, + primary->pipe->pipe, + output) { + drmModeModeInfo *mode; + struct igt_fb fb_modeset, fb, fbref; + struct chamelium_frame_dump *frame_fullcolors; + int fb_id, fb_modeset_id, fbref_id; + + for (i = 0; i < data->port_count; i++) + valid_output |= + (strcmp(output->name, connected_ports[i]) == 0); + if (!valid_output) + continue; + else + for (i = 0; i < data->port_count; i++) + if (strcmp(output->name, + connected_ports[i]) == 0) + port = data->ports[i]; + + igt_output_set_pipe(output, primary->pipe->pipe); + mode = igt_output_get_mode(output); + + /* Create a framebuffer at the size of the output. */ + fb_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fb); + igt_assert(fb_id); + + fb_modeset_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fb_modeset); + igt_assert(fb_modeset_id); + + fbref_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fbref); + igt_assert(fbref_id); + + igt_plane_set_fb(primary, &fb_modeset); + disable_ctm(primary->pipe); + disable_degamma(primary->pipe); + set_gamma(data, primary->pipe, gamma_linear); + igt_display_commit(&data->display); + + /* Draw solid colors with no degamma transformation. */ + paint_rectangles(data, mode, red_green_blue, &fbref); + + /* Draw a gradient with degamma LUT to remap all + * values to max red/green/blue. + */ + paint_gradient_rectangles(data, mode, red_green_blue, &fb); + igt_plane_set_fb(primary, &fb); + set_degamma(data, primary->pipe, degamma_full); + igt_display_commit(&data->display); + chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1); + frame_fullcolors = + chamelium_read_captured_frame(data->chamelium, 0); + + /* Verify that the framebuffer reference of the software + * computed output is equal to the frame dump of the degamma + * LUT transformation output. + */ + igt_assert(chamelium_frame_match_or_dump(data->chamelium, port, + frame_fullcolors, + &fbref, + CHAMELIUM_CHECK_ANALOG)); + + igt_plane_set_fb(primary, NULL); + igt_output_set_pipe(output, PIPE_NONE); + } + + free_lut(degamma_linear); + free_lut(degamma_full); + free_lut(gamma_linear); +} + +/* + * Draw 3 gradient rectangles in red, green and blue, with a maxed out + * gamma LUT and verify we have the same frame dump as drawing solid + * color rectangles. + */ +static void test_pipe_gamma(data_t *data, + igt_plane_t *primary) +{ + igt_output_t *output; + gamma_lut_t *gamma_full; + color_t red_green_blue[] = { + { 1.0, 0.0, 0.0 }, + { 0.0, 1.0, 0.0 }, + { 0.0, 0.0, 1.0 } + }; + + int i; + struct chamelium_port *port; + char *connected_ports[4]; + bool valid_output = false; + + for (i = 0; i < data->port_count; i++) + connected_ports[i] = + (char *) chamelium_port_get_name(data->ports[i]); + + igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_GAMMA_LUT)); + + gamma_full = generate_table_max(data->gamma_lut_size); + + for_each_valid_output_on_pipe(&data->display, + primary->pipe->pipe, + output) { + drmModeModeInfo *mode; + struct igt_fb fb_modeset, fb, fbref; + struct chamelium_frame_dump *frame_fullcolors; + int fb_id, fb_modeset_id, fbref_id; + + for (i = 0; i < data->port_count; i++) + valid_output |= + (strcmp(output->name, connected_ports[i]) == 0); + if (!valid_output) + continue; + else + for (i = 0; i < data->port_count; i++) + if (strcmp(output->name, + connected_ports[i]) == 0) + port = data->ports[i]; + + igt_output_set_pipe(output, primary->pipe->pipe); + mode = igt_output_get_mode(output); + + /* Create a framebuffer at the size of the output. */ + fb_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fb); + igt_assert(fb_id); + + fb_modeset_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fb_modeset); + igt_assert(fb_modeset_id); + + fbref_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fbref); + igt_assert(fbref_id); + + igt_plane_set_fb(primary, &fb_modeset); + disable_ctm(primary->pipe); + disable_degamma(primary->pipe); + set_gamma(data, primary->pipe, gamma_full); + igt_display_commit(&data->display); + + /* Draw solid colors with no gamma transformation. */ + paint_rectangles(data, mode, red_green_blue, &fbref); + + /* Draw a gradient with gamma LUT to remap all values + * to max red/green/blue. + */ + paint_gradient_rectangles(data, mode, red_green_blue, &fb); + igt_plane_set_fb(primary, &fb); + igt_display_commit(&data->display); + chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1); + frame_fullcolors = + chamelium_read_captured_frame(data->chamelium, 0); + + /* Verify that the framebuffer reference of the software computed + * output is equal to the frame dump of the degamma LUT + * transformation output. + */ + igt_assert(chamelium_frame_match_or_dump(data->chamelium, port, + frame_fullcolors, + &fbref, + CHAMELIUM_CHECK_ANALOG)); + + igt_plane_set_fb(primary, NULL); + igt_output_set_pipe(output, PIPE_NONE); + } + + free_lut(gamma_full); +} + +/* + * Draw 3 rectangles using before colors with the ctm matrix apply and verify + * the frame dump is equal to using after colors with an identify ctm matrix. + */ +static bool test_pipe_ctm(data_t *data, + igt_plane_t *primary, + color_t *before, + color_t *after, + double *ctm_matrix) +{ + gamma_lut_t *degamma_linear, *gamma_linear; + igt_output_t *output; + + int i; + bool ret = true; + struct chamelium_port *port; + char *connected_ports[4]; + bool valid_output = false; + + igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_CTM)); + + for (i = 0; i < data->port_count; i++) + connected_ports[i] = + (char *) chamelium_port_get_name(data->ports[i]); + + degamma_linear = generate_table(data->degamma_lut_size, 1.0); + gamma_linear = generate_table(data->gamma_lut_size, 1.0); + + for_each_valid_output_on_pipe(&data->display, + primary->pipe->pipe, + output) { + drmModeModeInfo *mode; + struct igt_fb fb_modeset, fb, fbref; + struct chamelium_frame_dump *frame_hardware; + int fb_id, fb_modeset_id, fbref_id; + + for (i = 0; i < data->port_count; i++) + valid_output |= + (strcmp(output->name, connected_ports[i]) == 0); + if (!valid_output) + continue; + else + for (i = 0; i < data->port_count; i++) + if (strcmp(output->name, + connected_ports[i]) == 0) + port = data->ports[i]; + + igt_output_set_pipe(output, primary->pipe->pipe); + mode = igt_output_get_mode(output); + + /* Create a framebuffer at the size of the output. */ + fb_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fb); + igt_assert(fb_id); + + fb_modeset_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fb_modeset); + igt_assert(fb_modeset_id); + + fbref_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fbref); + igt_assert(fbref_id); + + igt_plane_set_fb(primary, &fb_modeset); + + if (memcmp(before, after, sizeof(color_t))) { + set_degamma(data, primary->pipe, degamma_linear); + set_gamma(data, primary->pipe, gamma_linear); + } else { + /* Disable Degamma and Gamma for ctm max test */ + disable_degamma(primary->pipe); + disable_gamma(primary->pipe); + } + + disable_ctm(primary->pipe); + igt_display_commit(&data->display); + + paint_rectangles(data, mode, after, &fbref); + + /* With CTM transformation. */ + paint_rectangles(data, mode, before, &fb); + igt_plane_set_fb(primary, &fb); + set_ctm(primary->pipe, ctm_matrix); + igt_display_commit(&data->display); + chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1); + frame_hardware = + chamelium_read_captured_frame(data->chamelium, 0); + + /* Verify that the framebuffer reference of the software + * computed output is equal to the frame dump of the CTM + * matrix transformation output. + */ + ret &= chamelium_frame_match_or_dump(data->chamelium, port, + frame_hardware, + &fbref, + CHAMELIUM_CHECK_ANALOG); + + igt_plane_set_fb(primary, NULL); + igt_output_set_pipe(output, PIPE_NONE); + } + + free_lut(degamma_linear); + free_lut(gamma_linear); + + return ret; +} + +static void test_pipe_limited_range_ctm(data_t *data, + igt_plane_t *primary) +{ + double limited_result = 235.0 / 255.0; + color_t red_green_blue_limited[] = { + { limited_result, 0.0, 0.0 }, + { 0.0, limited_result, 0.0 }, + { 0.0, 0.0, limited_result } + }; + color_t red_green_blue_full[] = { + { 0.5, 0.0, 0.0 }, + { 0.0, 0.5, 0.0 }, + { 0.0, 0.0, 0.5 } + }; + double ctm[] = { 1.0, 0.0, 0.0, + 0.0, 1.0, 0.0, + 0.0, 0.0, 1.0 }; + gamma_lut_t *degamma_linear, *gamma_linear; + igt_output_t *output; + bool has_broadcast_rgb_output = false; + + int i; + struct chamelium_port *port; + char *connected_ports[4]; + bool valid_output = false; + + degamma_linear = generate_table(data->degamma_lut_size, 1.0); + gamma_linear = generate_table(data->gamma_lut_size, 1.0); + + for (i = 0; i < data->port_count; i++) + connected_ports[i] = + (char *) chamelium_port_get_name(data->ports[i]); + + for_each_valid_output_on_pipe(&data->display, + primary->pipe->pipe, + output) { + drmModeModeInfo *mode; + struct igt_fb fb_modeset, fb, fbref; + struct chamelium_frame_dump *frame_limited; + int fb_id, fb_modeset_id, fbref_id; + + for (i = 0; i < data->port_count; i++) + valid_output |= + (strcmp(output->name, connected_ports[i]) == 0); + if (!valid_output) + continue; + else + for (i = 0; i < data->port_count; i++) + if (strcmp(output->name, + connected_ports[i]) == 0) + port = data->ports[i]; + + if (!igt_output_has_prop(output, IGT_CONNECTOR_BROADCAST_RGB)) + continue; + + has_broadcast_rgb_output = true; + + igt_output_set_pipe(output, primary->pipe->pipe); + mode = igt_output_get_mode(output); + + /* Create a framebuffer at the size of the output. */ + fb_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fb); + igt_assert(fb_id); + + fb_modeset_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fb_modeset); + igt_assert(fb_modeset_id); + + fbref_id = igt_create_fb(data->drm_fd, + mode->hdisplay, + mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + &fbref); + igt_assert(fbref_id); + + igt_plane_set_fb(primary, &fb_modeset); + + set_degamma(data, primary->pipe, degamma_linear); + set_gamma(data, primary->pipe, gamma_linear); + set_ctm(primary->pipe, ctm); + + igt_output_set_prop_value(output, + IGT_CONNECTOR_BROADCAST_RGB, + BROADCAST_RGB_FULL); + paint_rectangles(data, mode, red_green_blue_limited, &fb); + igt_plane_set_fb(primary, &fb); + igt_display_commit(&data->display); + + /* Set the output into limited range. */ + igt_output_set_prop_value(output, + IGT_CONNECTOR_BROADCAST_RGB, + BROADCAST_RGB_16_235); + paint_rectangles(data, mode, red_green_blue_full, &fb); + + /* And reset.. */ + igt_output_set_prop_value(output, + IGT_CONNECTOR_BROADCAST_RGB, + BROADCAST_RGB_FULL); + igt_plane_set_fb(primary, NULL); + igt_output_set_pipe(output, PIPE_NONE); + chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1); + frame_limited = + chamelium_read_captured_frame(data->chamelium, 0); + + + /* Verify that the framebuffer reference of the software + * computed output is equal to the frame dump of the CTM + * matrix transformation output. + */ + igt_assert(chamelium_frame_match_or_dump(data->chamelium, port, + frame_limited, + &fbref, + CHAMELIUM_CHECK_ANALOG)); + + } + + free_lut(gamma_linear); + free_lut(degamma_linear); + + igt_require(has_broadcast_rgb_output); +} + +static void +run_tests_for_pipe(data_t *data, enum pipe p) +{ + igt_pipe_t *pipe; + igt_plane_t *primary; + double delta; + int i; + color_t red_green_blue[] = { + { 1.0, 0.0, 0.0 }, + { 0.0, 1.0, 0.0 }, + { 0.0, 0.0, 1.0 } + }; + + igt_fixture { + + igt_require(p < data->display.n_pipes); + + pipe = &data->display.pipes[p]; + igt_require(pipe->n_planes >= 0); + + primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY); + + if (igt_pipe_obj_has_prop(&data->display.pipes[p], + IGT_CRTC_DEGAMMA_LUT_SIZE)) { + data->degamma_lut_size = + igt_pipe_obj_get_prop(&data->display.pipes[p], + IGT_CRTC_DEGAMMA_LUT_SIZE); + igt_assert_lt(0, data->degamma_lut_size); + } + + if (igt_pipe_obj_has_prop(&data->display.pipes[p], + IGT_CRTC_GAMMA_LUT_SIZE)) { + data->gamma_lut_size = + igt_pipe_obj_get_prop(&data->display.pipes[p], + IGT_CRTC_GAMMA_LUT_SIZE); + igt_assert_lt(0, data->gamma_lut_size); + } + + igt_display_require_output_on_pipe(&data->display, p); + } + + data->color_depth = 8; + delta = 1.0 / (1 << data->color_depth); + + igt_describe("Compare after applying ctm matrix & identity matrix"); + 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)); + } + + igt_describe("Compare after applying ctm matrix & identity matrix"); + 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_describe("Compare after applying ctm matrix & identity matrix"); + 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)); + } + + /* 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_describe("Compare after applying ctm matrix & identity matrix"); + 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); + } + igt_assert(success); + } + + igt_describe("Compare after applying ctm matrix & identity matrix"); + 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_assert(success); + } + + igt_describe("Compare after applying ctm matrix & identity matrix"); + 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_assert(success); + } + + igt_describe("Compare after applying ctm matrix & identity matrix"); + 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_describe("Compare after applying ctm matrix & identity matrix"); + 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_describe("Compare after applying ctm matrix & identity matrix"); + igt_subtest_f("pipe-%s-ctm-limited-range", kmstest_pipe_name(p)) + test_pipe_limited_range_ctm(data, primary); + + igt_describe("Compare maxed out gamma LUT and solid color linear LUT"); + igt_subtest_f("pipe-%s-degamma", kmstest_pipe_name(p)) + test_pipe_degamma(data, primary); + + igt_describe("Compare maxed out gamma LUT and solid color linear LUT"); + igt_subtest_f("pipe-%s-gamma", kmstest_pipe_name(p)) + test_pipe_gamma(data, primary); + + igt_fixture { + disable_degamma(primary->pipe); + disable_gamma(primary->pipe); + disable_ctm(primary->pipe); + igt_display_commit(&data->display); + } +} + +igt_main +{ + data_t data = {}; + enum pipe pipe; + + igt_fixture { + data.drm_fd = drm_open_driver_master(DRIVER_ANY); + if (is_i915_device(data.drm_fd)) + data.devid = intel_get_drm_devid(data.drm_fd); + data.chamelium = chamelium_init(data.drm_fd); + igt_require(data.chamelium); + + data.ports = chamelium_get_ports(data.chamelium, + &data.port_count); + + kmstest_set_vt_graphics_mode(); + igt_display_require(&data.display, data.drm_fd); + igt_require(data.display.is_atomic); + } + + for_each_pipe_static(pipe) + igt_subtest_group + run_tests_for_pipe(&data, pipe); + igt_describe("Negative test case gamma lut size"); + igt_subtest_f("pipe-invalid-gamma-lut-sizes") + invalid_gamma_lut_sizes(&data); + + igt_describe("Negative test case degamma lut size"); + igt_subtest_f("pipe-invalid-degamma-lut-sizes") + invalid_degamma_lut_sizes(&data); + + igt_describe("Negative test case ctm matrix size"); + igt_subtest_f("pipe-invalid-ctm-matrix-sizes") + invalid_ctm_matrix_sizes(&data); + + igt_fixture { + igt_display_fini(&data.display); + } +} -- 2.7.4 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v3 3/3] tests/kms_color_chamelium: add subtests to validate color 2020-01-21 5:54 ` [igt-dev] [PATCH i-g-t v3 3/3] tests/kms_color_chamelium: add subtests to validate color Kunal Joshi @ 2020-01-21 13:51 ` Petri Latvala 2020-01-23 7:00 ` Kunal Joshi 0 siblings, 1 reply; 11+ messages in thread From: Petri Latvala @ 2020-01-21 13:51 UTC (permalink / raw) To: Kunal Joshi; +Cc: ville.syrjala, igt-dev, daniel.vetter On Tue, Jan 21, 2020 at 11:24:15AM +0530, Kunal Joshi wrote: > To validate color subtests using chamelium, subtests modified > to do frame dump comparison instead of crc comparison. > Tests require chamelium and will validate color features > at pipe level. > > (v2) > Comparing framedump with framebuffer reference instead of > comparing two framedump. > (v3) > Moved common functions with kms_color to lib/igt_color > > Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com> > Signed-off-by: Swati Sharma <swati2.sharma@intel.com> > Suggested-by: Uma Shankar <uma.shankar@intel.com> > --- > tests/Makefile.am | 1 + > tests/kms_color_chamelium.c | 759 ++++++++++++++++++++++++++++++++++++++++++++ Meson changes are missing. Looks pretty much what you'd expect from a kms_color ported to use chamelium. When you send the next revision, can you also include a patch with commit message "HAX: Run in BAT", modifying tests/intel-ci/fast-feedback.testlist to add all these new tests there. That way we get testing done on chameliums, which we currently only have on the BAT machines, not on shards. -- Petri Latvala _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v3 3/3] tests/kms_color_chamelium: add subtests to validate color 2020-01-21 13:51 ` Petri Latvala @ 2020-01-23 7:00 ` Kunal Joshi 0 siblings, 0 replies; 11+ messages in thread From: Kunal Joshi @ 2020-01-23 7:00 UTC (permalink / raw) To: Petri Latvala; +Cc: igt-dev On 2020-01-21 at 15:51:15 +0200, Petri Latvala wrote: > On Tue, Jan 21, 2020 at 11:24:15AM +0530, Kunal Joshi wrote: > > To validate color subtests using chamelium, subtests modified > > to do frame dump comparison instead of crc comparison. > > Tests require chamelium and will validate color features > > at pipe level. > > > > (v2) > > Comparing framedump with framebuffer reference instead of > > comparing two framedump. > > (v3) > > Moved common functions with kms_color to lib/igt_color > > > > Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com> > > Signed-off-by: Swati Sharma <swati2.sharma@intel.com> > > Suggested-by: Uma Shankar <uma.shankar@intel.com> > > --- > > tests/Makefile.am | 1 + > > tests/kms_color_chamelium.c | 759 ++++++++++++++++++++++++++++++++++++++++++++ > > > Meson changes are missing. > > Looks pretty much what you'd expect from a kms_color ported to use > chamelium. When you send the next revision, can you also include a > patch with commit message "HAX: Run in BAT", modifying > tests/intel-ci/fast-feedback.testlist to add all these new tests > there. That way we get testing done on chameliums, which we currently > only have on the BAT machines, not on shards. > > > -- > Petri Latvala Thanks petri for the feedback and support. I will float the next patch with recommended changes. Regards Kunal _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <1579586055-27583-3-git-send-email-kunal1.joshi@intel.com>]
* Re: [igt-dev] [PATCH i-g-t v3 2/3] lib/igt_color Moved kms_color functions to lib/igt_color to git avoid code duplication [not found] ` <1579586055-27583-3-git-send-email-kunal1.joshi@intel.com> @ 2020-01-21 13:42 ` Petri Latvala 0 siblings, 0 replies; 11+ messages in thread From: Petri Latvala @ 2020-01-21 13:42 UTC (permalink / raw) To: Kunal Joshi; +Cc: igt-dev, daniel.vetter, ville.syrjala On Tue, Jan 21, 2020 at 11:24:14AM +0530, Kunal Joshi wrote: > kms_color and kms_color_chamelium shared common functions. > Moved them to lib/igt_color to avoid code duplication. > > Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com> > Signed-off-by: Swati Sharma <swati2.sharma@intel.com> > Suggested-by: Uma Shankar <uma.shankar@intel.com> > --- > lib/Makefile.sources | 2 + > lib/igt_color.c | 386 +++++++++++++++++++++++++++++++++++++++++++++++++++ > lib/igt_color.h | 105 ++++++++++++++ > 3 files changed, 493 insertions(+) > create mode 100644 lib/igt_color.c > create mode 100644 lib/igt_color.h Meson changes are missing. The removal of those functions from tests/kms_color.c should be in this commit too. > diff --git a/lib/igt_color.c b/lib/igt_color.c > + > +#include "igt_color.h" > + > +void paint_gradient_rectangles(data_t *data, > + drmModeModeInfo *mode, > + color_t *colors, > + struct igt_fb *fb) You can't just blindly copy the functions over. data_t is a name tests use for their test-specific structures, library code shouldn't have such a name. This function for example just uses drm_fd from data, so the function should take int fd instead. > +struct drm_color_lut *coeffs_to_lut(data_t *data, > + const gamma_lut_t *gamma, > + uint32_t color_depth, > + int off) > +{ > + struct drm_color_lut *lut; > + int i, lut_size = gamma->size; > + uint32_t max_value = (1 << 16) - 1; > + uint32_t mask; > + > + if (is_i915_device(data->drm_fd)) > + mask = ((1 << color_depth) - 1) << 8; > + else > + mask = max_value; > + > + lut = malloc(sizeof(struct drm_color_lut) * lut_size); > + > + if (IS_CHERRYVIEW(data->devid)) Another example why you can't just copy over functions from a test: Nothing in this patch fills in the devid field. Some documentation for new lib functions would also be very nice. -- Petri Latvala _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for validate color tests using chamelium. (rev3) 2020-01-21 5:54 [igt-dev] [PATCH i-g-t v3 0/3] validate color tests using chamelium Kunal Joshi ` (2 preceding siblings ...) [not found] ` <1579586055-27583-3-git-send-email-kunal1.joshi@intel.com> @ 2020-01-21 13:43 ` Patchwork 2020-01-22 12:10 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 4 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2020-01-21 13:43 UTC (permalink / raw) To: Kunal Joshi; +Cc: igt-dev == Series Details == Series: validate color tests using chamelium. (rev3) URL : https://patchwork.freedesktop.org/series/72006/ State : success == Summary == CI Bug Log - changes from CI_DRM_7783 -> IGTPW_3959 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/index.html Known issues ------------ Here are the changes found in IGTPW_3959 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_close_race@basic-process: - fi-byt-n2820: [PASS][1] -> [FAIL][2] ([i915#694]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-byt-n2820/igt@gem_close_race@basic-process.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-byt-n2820/igt@gem_close_race@basic-process.html * igt@i915_selftest@live_blt: - fi-hsw-4770r: [PASS][3] -> [DMESG-FAIL][4] ([i915#725]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-hsw-4770r/igt@i915_selftest@live_blt.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-hsw-4770r/igt@i915_selftest@live_blt.html * igt@i915_selftest@live_coherency: - fi-cfl-guc: [PASS][5] -> [DMESG-FAIL][6] ([i915#889]) +7 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-cfl-guc/igt@i915_selftest@live_coherency.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-cfl-guc/igt@i915_selftest@live_coherency.html * igt@i915_selftest@live_gt_timelines: - fi-cfl-guc: [PASS][7] -> [DMESG-WARN][8] ([i915#889]) +23 similar issues [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-cfl-guc/igt@i915_selftest@live_gt_timelines.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-cfl-guc/igt@i915_selftest@live_gt_timelines.html #### Possible fixes #### * igt@gem_exec_parallel@contexts: - fi-byt-n2820: [INCOMPLETE][9] ([i915#45] / [i915#999]) -> [PASS][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-byt-n2820/igt@gem_exec_parallel@contexts.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-byt-n2820/igt@gem_exec_parallel@contexts.html - {fi-ehl-1}: [INCOMPLETE][11] ([i915#937]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-ehl-1/igt@gem_exec_parallel@contexts.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-ehl-1/igt@gem_exec_parallel@contexts.html * igt@i915_module_load@reload-with-fault-injection: - fi-cfl-8700k: [DMESG-WARN][13] ([i915#889]) -> [PASS][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-cfl-8700k/igt@i915_module_load@reload-with-fault-injection.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-cfl-8700k/igt@i915_module_load@reload-with-fault-injection.html - fi-skl-6700k2: [INCOMPLETE][15] ([i915#671]) -> [PASS][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-skl-6700k2/igt@i915_module_load@reload-with-fault-injection.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-skl-6700k2/igt@i915_module_load@reload-with-fault-injection.html - fi-kbl-x1275: [DMESG-WARN][17] ([i915#889]) -> [PASS][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-kbl-x1275/igt@i915_module_load@reload-with-fault-injection.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-kbl-x1275/igt@i915_module_load@reload-with-fault-injection.html * igt@i915_pm_rpm@module-reload: - fi-kbl-x1275: [INCOMPLETE][19] ([i915#151]) -> [PASS][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html #### Warnings #### * igt@kms_chamelium@common-hpd-after-suspend: - fi-icl-u2: [DMESG-WARN][21] ([IGT#4] / [i915#263]) -> [FAIL][22] ([i915#217]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/fi-icl-u2/igt@kms_chamelium@common-hpd-after-suspend.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/fi-icl-u2/igt@kms_chamelium@common-hpd-after-suspend.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [IGT#4]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/4 [i915#151]: https://gitlab.freedesktop.org/drm/intel/issues/151 [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217 [i915#263]: https://gitlab.freedesktop.org/drm/intel/issues/263 [i915#45]: https://gitlab.freedesktop.org/drm/intel/issues/45 [i915#671]: https://gitlab.freedesktop.org/drm/intel/issues/671 [i915#694]: https://gitlab.freedesktop.org/drm/intel/issues/694 [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725 [i915#889]: https://gitlab.freedesktop.org/drm/intel/issues/889 [i915#937]: https://gitlab.freedesktop.org/drm/intel/issues/937 [i915#999]: https://gitlab.freedesktop.org/drm/intel/issues/999 Participating hosts (44 -> 44) ------------------------------ Additional (5): fi-glk-dsi fi-gdg-551 fi-bsw-kefka fi-bsw-nick fi-snb-2600 Missing (5): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_5376 -> IGTPW_3959 CI-20190529: 20190529 CI_DRM_7783: 3ee976286895f0bd54388efc16b12f62c624ff19 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_3959: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/index.html IGT_5376: 5cf58d947a02379d2885d6dd4f8bb487cfc3eed2 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/index.html _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for validate color tests using chamelium. (rev3) 2020-01-21 5:54 [igt-dev] [PATCH i-g-t v3 0/3] validate color tests using chamelium Kunal Joshi ` (3 preceding siblings ...) 2020-01-21 13:43 ` [igt-dev] ✓ Fi.CI.BAT: success for validate color tests using chamelium. (rev3) Patchwork @ 2020-01-22 12:10 ` Patchwork 4 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2020-01-22 12:10 UTC (permalink / raw) To: Kunal Joshi; +Cc: igt-dev == Series Details == Series: validate color tests using chamelium. (rev3) URL : https://patchwork.freedesktop.org/series/72006/ State : success == Summary == CI Bug Log - changes from CI_DRM_7783_full -> IGTPW_3959_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/index.html Known issues ------------ Here are the changes found in IGTPW_3959_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_busy@close-race: - shard-tglb: [PASS][1] -> [INCOMPLETE][2] ([i915#472] / [i915#977]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-tglb7/igt@gem_busy@close-race.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-tglb4/igt@gem_busy@close-race.html * igt@gem_ctx_persistence@vcs1-mixed-process: - shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276] / [fdo#112080]) +2 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb4/igt@gem_ctx_persistence@vcs1-mixed-process.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb8/igt@gem_ctx_persistence@vcs1-mixed-process.html - shard-tglb: [PASS][5] -> [FAIL][6] ([i915#679]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-tglb4/igt@gem_ctx_persistence@vcs1-mixed-process.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-tglb5/igt@gem_ctx_persistence@vcs1-mixed-process.html * igt@gem_exec_balancer@smoke: - shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#110854]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb4/igt@gem_exec_balancer@smoke.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb8/igt@gem_exec_balancer@smoke.html * igt@gem_exec_parallel@vcs1-fds: - shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#112080]) +12 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb1/igt@gem_exec_parallel@vcs1-fds.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb3/igt@gem_exec_parallel@vcs1-fds.html * igt@gem_exec_schedule@pi-userfault-bsd: - shard-iclb: [PASS][11] -> [SKIP][12] ([i915#677]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb8/igt@gem_exec_schedule@pi-userfault-bsd.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb1/igt@gem_exec_schedule@pi-userfault-bsd.html * igt@gem_exec_schedule@preempt-self-bsd: - shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#112146]) +3 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb8/igt@gem_exec_schedule@preempt-self-bsd.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb2/igt@gem_exec_schedule@preempt-self-bsd.html * igt@gem_persistent_relocs@forked-thrash-inactive: - shard-hsw: [PASS][15] -> [INCOMPLETE][16] ([i915#530] / [i915#61]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-hsw1/igt@gem_persistent_relocs@forked-thrash-inactive.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-hsw6/igt@gem_persistent_relocs@forked-thrash-inactive.html * igt@gem_tiled_blits@interruptible: - shard-hsw: [PASS][17] -> [FAIL][18] ([i915#818]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-hsw6/igt@gem_tiled_blits@interruptible.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-hsw5/igt@gem_tiled_blits@interruptible.html * igt@i915_pm_dc@dc5-dpms: - shard-iclb: [PASS][19] -> [FAIL][20] ([i915#447]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb2/igt@i915_pm_dc@dc5-dpms.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb3/igt@i915_pm_dc@dc5-dpms.html * igt@i915_pm_rps@waitboost: - shard-iclb: [PASS][21] -> [FAIL][22] ([i915#413]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb4/igt@i915_pm_rps@waitboost.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb3/igt@i915_pm_rps@waitboost.html * igt@i915_suspend@fence-restore-untiled: - shard-kbl: [PASS][23] -> [DMESG-WARN][24] ([i915#180]) +1 similar issue [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-kbl1/igt@i915_suspend@fence-restore-untiled.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-kbl4/igt@i915_suspend@fence-restore-untiled.html * igt@i915_suspend@forcewake: - shard-iclb: [PASS][25] -> [DMESG-WARN][26] ([fdo#111764]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb2/igt@i915_suspend@forcewake.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb8/igt@i915_suspend@forcewake.html * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy: - shard-glk: [PASS][27] -> [FAIL][28] ([i915#72]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-glk4/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-glk3/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html * igt@kms_flip@flip-vs-suspend-interruptible: - shard-apl: [PASS][29] -> [DMESG-WARN][30] ([i915#180]) +1 similar issue [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-apl2/igt@kms_flip@flip-vs-suspend-interruptible.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-apl3/igt@kms_flip@flip-vs-suspend-interruptible.html - shard-iclb: [PASS][31] -> [INCOMPLETE][32] ([i915#140] / [i915#221]) [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb8/igt@kms_flip@flip-vs-suspend-interruptible.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb3/igt@kms_flip@flip-vs-suspend-interruptible.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt: - shard-tglb: [PASS][33] -> [FAIL][34] ([i915#49]) +4 similar issues [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-tglb2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-tglb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt.html * igt@kms_psr2_su@page_flip: - shard-iclb: [PASS][35] -> [SKIP][36] ([fdo#109642] / [fdo#111068]) [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb2/igt@kms_psr2_su@page_flip.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb7/igt@kms_psr2_su@page_flip.html * igt@kms_psr@psr2_sprite_render: - shard-iclb: [PASS][37] -> [SKIP][38] ([fdo#109441]) +1 similar issue [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb2/igt@kms_psr@psr2_sprite_render.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb7/igt@kms_psr@psr2_sprite_render.html * igt@kms_vblank@pipe-b-ts-continuation-suspend: - shard-kbl: [PASS][39] -> [INCOMPLETE][40] ([fdo#103665]) [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-kbl7/igt@kms_vblank@pipe-b-ts-continuation-suspend.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-kbl2/igt@kms_vblank@pipe-b-ts-continuation-suspend.html * igt@prime_busy@hang-bsd2: - shard-iclb: [PASS][41] -> [SKIP][42] ([fdo#109276]) +26 similar issues [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb4/igt@prime_busy@hang-bsd2.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb6/igt@prime_busy@hang-bsd2.html #### Possible fixes #### * igt@gem_busy@extended-parallel-vcs1: - shard-iclb: [SKIP][43] ([fdo#112080]) -> [PASS][44] +5 similar issues [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb3/igt@gem_busy@extended-parallel-vcs1.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb4/igt@gem_busy@extended-parallel-vcs1.html * igt@gem_ctx_persistence@vcs1-mixed: - shard-iclb: [SKIP][45] ([fdo#109276] / [fdo#112080]) -> [PASS][46] +3 similar issues [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb7/igt@gem_ctx_persistence@vcs1-mixed.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb4/igt@gem_ctx_persistence@vcs1-mixed.html * igt@gem_ctx_shared@exec-single-timeline-bsd: - shard-iclb: [SKIP][47] ([fdo#110841]) -> [PASS][48] [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb2/igt@gem_ctx_shared@exec-single-timeline-bsd.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb6/igt@gem_ctx_shared@exec-single-timeline-bsd.html * igt@gem_exec_schedule@pi-common-bsd: - shard-iclb: [SKIP][49] ([i915#677]) -> [PASS][50] +1 similar issue [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb1/igt@gem_exec_schedule@pi-common-bsd.html [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb8/igt@gem_exec_schedule@pi-common-bsd.html * igt@gem_exec_schedule@preempt-other-chain-bsd: - shard-iclb: [SKIP][51] ([fdo#112146]) -> [PASS][52] +3 similar issues [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb4/igt@gem_exec_schedule@preempt-other-chain-bsd.html [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb7/igt@gem_exec_schedule@preempt-other-chain-bsd.html * igt@gem_exec_schedule@smoketest-all: - shard-tglb: [INCOMPLETE][53] ([i915#463] / [i915#472]) -> [PASS][54] [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-tglb1/igt@gem_exec_schedule@smoketest-all.html [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-tglb3/igt@gem_exec_schedule@smoketest-all.html * igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive: - shard-apl: [TIMEOUT][55] ([fdo#112271] / [i915#530]) -> [PASS][56] [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-apl3/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-apl8/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html - shard-hsw: [TIMEOUT][57] ([fdo#112271] / [i915#530]) -> [PASS][58] +1 similar issue [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-hsw1/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-hsw5/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html * igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing: - shard-tglb: [TIMEOUT][59] ([fdo#112126] / [fdo#112271]) -> [PASS][60] [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-tglb1/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-tglb2/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html * igt@gem_persistent_relocs@forked-interruptible-thrash-inactive: - shard-tglb: [TIMEOUT][61] ([fdo#112126] / [fdo#112271] / [i915#530]) -> [PASS][62] [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-tglb5/igt@gem_persistent_relocs@forked-interruptible-thrash-inactive.html [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-tglb8/igt@gem_persistent_relocs@forked-interruptible-thrash-inactive.html * igt@gem_persistent_relocs@forked-interruptible-thrashing: - shard-glk: [TIMEOUT][63] ([fdo#112271]) -> [PASS][64] [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-glk2/igt@gem_persistent_relocs@forked-interruptible-thrashing.html [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-glk3/igt@gem_persistent_relocs@forked-interruptible-thrashing.html * igt@gem_persistent_relocs@forked-thrashing: - shard-hsw: [INCOMPLETE][65] ([i915#530] / [i915#61]) -> [PASS][66] +1 similar issue [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-hsw7/igt@gem_persistent_relocs@forked-thrashing.html [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-hsw1/igt@gem_persistent_relocs@forked-thrashing.html * igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup: - shard-snb: [DMESG-WARN][67] ([fdo#111870] / [i915#478]) -> [PASS][68] [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-snb2/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-snb6/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy-gup.html * igt@i915_pm_dc@dc6-psr: - shard-iclb: [FAIL][69] ([i915#454]) -> [PASS][70] [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb2/igt@i915_pm_dc@dc6-psr.html [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb7/igt@i915_pm_dc@dc6-psr.html * igt@i915_selftest@mock_requests: - shard-tglb: [INCOMPLETE][71] ([i915#472]) -> [PASS][72] [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-tglb7/igt@i915_selftest@mock_requests.html [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-tglb3/igt@i915_selftest@mock_requests.html - shard-apl: [INCOMPLETE][73] ([fdo#103927]) -> [PASS][74] [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-apl6/igt@i915_selftest@mock_requests.html [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-apl1/igt@i915_selftest@mock_requests.html * igt@kms_cursor_crc@pipe-c-cursor-suspend: - shard-kbl: [DMESG-WARN][75] ([i915#180]) -> [PASS][76] +4 similar issues [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-kbl7/igt@kms_cursor_crc@pipe-c-cursor-suspend.html [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-kbl7/igt@kms_cursor_crc@pipe-c-cursor-suspend.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu: - shard-tglb: [FAIL][77] ([i915#49]) -> [PASS][78] +2 similar issues [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-tglb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-tglb8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html * igt@kms_psr@psr2_cursor_plane_move: - shard-iclb: [SKIP][79] ([fdo#109441]) -> [PASS][80] [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb4/igt@kms_psr@psr2_cursor_plane_move.html [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb2/igt@kms_psr@psr2_cursor_plane_move.html * igt@prime_vgem@fence-wait-bsd2: - shard-iclb: [SKIP][81] ([fdo#109276]) -> [PASS][82] +11 similar issues [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb6/igt@prime_vgem@fence-wait-bsd2.html [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb1/igt@prime_vgem@fence-wait-bsd2.html #### Warnings #### * igt@gem_ctx_isolation@vcs1-nonpriv-switch: - shard-iclb: [FAIL][83] ([IGT#28]) -> [SKIP][84] ([fdo#109276] / [fdo#112080]) [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb4/igt@gem_ctx_isolation@vcs1-nonpriv-switch.html [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb6/igt@gem_ctx_isolation@vcs1-nonpriv-switch.html * igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing: - shard-apl: [TIMEOUT][85] ([fdo#112271]) -> [TIMEOUT][86] ([fdo#112271] / [i915#530]) [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-apl7/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-apl7/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html * igt@gem_userptr_blits@map-fixed-invalidate-busy-gup: - shard-snb: [DMESG-WARN][87] ([fdo#111870] / [i915#478]) -> [DMESG-WARN][88] ([fdo#110789] / [fdo#111870] / [i915#478]) [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-snb2/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-snb4/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html * igt@gem_userptr_blits@sync-unmap: - shard-snb: [DMESG-WARN][89] ([fdo#110789] / [fdo#111870] / [i915#478]) -> [DMESG-WARN][90] ([fdo#111870] / [i915#478]) [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-snb4/igt@gem_userptr_blits@sync-unmap.html [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-snb6/igt@gem_userptr_blits@sync-unmap.html * igt@kms_dp_dsc@basic-dsc-enable-edp: - shard-iclb: [DMESG-WARN][91] ([fdo#107724]) -> [SKIP][92] ([fdo#109349]) [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7783/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/shard-iclb7/igt@kms_dp_dsc@basic-dsc-enable-edp.html [IGT#28]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/28 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724 [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276 [fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#110789]: https://bugs.freedesktop.org/show_bug.cgi?id=110789 [fdo#110841]: https://bugs.freedesktop.org/show_bug.cgi?id=110841 [fdo#110854]: https://bugs.freedesktop.org/show_bug.cgi?id=110854 [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068 [fdo#111764]: https://bugs.freedesktop.org/show_bug.cgi?id=111764 [fdo#111870]: https://bugs.freedesktop.org/show_bug.cgi?id=111870 [fdo#112080]: https://bugs.freedesktop.org/show_bug.cgi?id=112080 [fdo#112126]: https://bugs.freedesktop.org/show_bug.cgi?id=112126 [fdo#112146]: https://bugs.freedesktop.org/show_bug.cgi?id=112146 [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271 [i915#140]: https://gitlab.freedesktop.org/drm/intel/issues/140 [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180 [i915#221]: https://gitlab.freedesktop.org/drm/intel/issues/221 [i915#413]: https://gitlab.freedesktop.org/drm/intel/issues/413 [i915#447]: https://gitlab.freedesktop.org/drm/intel/issues/447 [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454 [i915#463]: https://gitlab.freedesktop.org/drm/intel/issues/463 [i915#472]: https://gitlab.freedesktop.org/drm/intel/issues/472 [i915#478]: https://gitlab.freedesktop.org/drm/intel/issues/478 [i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49 [i915#530]: https://gitlab.freedesktop.org/drm/intel/issues/530 [i915#61]: https://gitlab.freedesktop.org/drm/intel/issues/61 [i915#677]: https://gitlab.freedesktop.org/drm/intel/issues/677 [i915#679]: https://gitlab.freedesktop.org/drm/intel/issues/679 [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72 [i915#818]: https://gitlab.freedesktop.org/drm/intel/issues/818 [i915#977]: https://gitlab.freedesktop.org/drm/intel/issues/977 Participating hosts (10 -> 8) ------------------------------ Missing (2): pig-skl-6260u pig-glk-j5005 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_5376 -> IGTPW_3959 * Piglit: piglit_4509 -> None CI-20190529: 20190529 CI_DRM_7783: 3ee976286895f0bd54388efc16b12f62c624ff19 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_3959: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/index.html IGT_5376: 5cf58d947a02379d2885d6dd4f8bb487cfc3eed2 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3959/index.html _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-01-23 13:59 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-01-21 5:54 [igt-dev] [PATCH i-g-t v3 0/3] validate color tests using chamelium Kunal Joshi 2020-01-21 5:54 ` [igt-dev] [PATCH i-g-t v3 1/3] lib/igt_chamelium Added chamelium_frame_match_or_dump which returns bool that the captured frame matches Kunal Joshi 2020-01-21 13:29 ` Petri Latvala 2020-01-22 3:01 ` Kunal Joshi 2020-01-22 10:34 ` Petri Latvala 2020-01-21 5:54 ` [igt-dev] [PATCH i-g-t v3 3/3] tests/kms_color_chamelium: add subtests to validate color Kunal Joshi 2020-01-21 13:51 ` Petri Latvala 2020-01-23 7:00 ` Kunal Joshi [not found] ` <1579586055-27583-3-git-send-email-kunal1.joshi@intel.com> 2020-01-21 13:42 ` [igt-dev] [PATCH i-g-t v3 2/3] lib/igt_color Moved kms_color functions to lib/igt_color to git avoid code duplication Petri Latvala 2020-01-21 13:43 ` [igt-dev] ✓ Fi.CI.BAT: success for validate color tests using chamelium. (rev3) Patchwork 2020-01-22 12:10 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.