Some platforms might not have degamma or ctm support.
We can only verify whether those properties behave properly
if they're available.

Fixes: aa55641d4 ("tests/kms_color: New test for pipe level color management")
Signed-off-by: Lionel Landwerlin <[email protected]>
---
 tests/kms_pipe_color.c | 85 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 53 insertions(+), 32 deletions(-)

diff --git a/tests/kms_pipe_color.c b/tests/kms_pipe_color.c
index a3100fae..12400686 100644
--- a/tests/kms_pipe_color.c
+++ b/tests/kms_pipe_color.c
@@ -1103,38 +1103,50 @@ invalid_lut_sizes(data_t *data)
        struct _drm_color_lut *degamma_lut = malloc(data->degamma_lut_size * 
sizeof(struct _drm_color_lut) * 2);
        struct _drm_color_lut *gamma_lut = malloc(data->gamma_lut_size * 
sizeof(struct _drm_color_lut) * 2);
 
-       igt_assert_eq(pipe_set_property_blob(pipe, "DEGAMMA_LUT",
-                                            degamma_lut, 1), -EINVAL);
-       igt_assert_eq(pipe_set_property_blob(pipe, "DEGAMMA_LUT",
-                                            degamma_lut, degamma_lut_size + 1),
-                     -EINVAL);
-       igt_assert_eq(pipe_set_property_blob(pipe, "DEGAMMA_LUT",
-                                            degamma_lut, degamma_lut_size - 1),
-                     -EINVAL);
-       igt_assert_eq(pipe_set_property_blob(pipe, "DEGAMMA_LUT",
-                                            degamma_lut, degamma_lut_size + 
sizeof(struct _drm_color_lut)),
-                     -EINVAL);
-       igt_assert_eq(pipe_set_property_blob_id(pipe, "DEGAMMA_LUT", 
pipe->crtc_id),
-                     -EINVAL);
-       igt_assert_eq(pipe_set_property_blob_id(pipe, "DEGAMMA_LUT", 4096 * 
4096),
-                     -EINVAL);
+       if (kmstest_get_property(pipe->display->drm_fd,
+                                pipe->crtc_id,
+                                DRM_MODE_OBJECT_CRTC,
+                                "DEGAMMA_LUT",
+                                NULL, NULL, NULL)) {
+               igt_assert_eq(pipe_set_property_blob(pipe, "DEGAMMA_LUT",
+                                                    degamma_lut, 1), -EINVAL);
+               igt_assert_eq(pipe_set_property_blob(pipe, "DEGAMMA_LUT",
+                                                    degamma_lut, 
degamma_lut_size + 1),
+                             -EINVAL);
+               igt_assert_eq(pipe_set_property_blob(pipe, "DEGAMMA_LUT",
+                                                    degamma_lut, 
degamma_lut_size - 1),
+                             -EINVAL);
+               igt_assert_eq(pipe_set_property_blob(pipe, "DEGAMMA_LUT",
+                                                    degamma_lut, 
degamma_lut_size + sizeof(struct _drm_color_lut)),
+                             -EINVAL);
+               igt_assert_eq(pipe_set_property_blob_id(pipe, "DEGAMMA_LUT", 
pipe->crtc_id),
+                             -EINVAL);
+               igt_assert_eq(pipe_set_property_blob_id(pipe, "DEGAMMA_LUT", 
4096 * 4096),
+                             -EINVAL);
+       }
 
-       igt_assert_eq(pipe_set_property_blob(pipe, "GAMMA_LUT",
-                                            gamma_lut, 1),
-                     -EINVAL);
-       igt_assert_eq(pipe_set_property_blob(pipe, "GAMMA_LUT",
-                                            gamma_lut, gamma_lut_size + 1),
-                     -EINVAL);
-       igt_assert_eq(pipe_set_property_blob(pipe, "GAMMA_LUT",
-                                            gamma_lut, gamma_lut_size - 1),
-                     -EINVAL);
-       igt_assert_eq(pipe_set_property_blob(pipe, "GAMMA_LUT",
-                                            gamma_lut, gamma_lut_size + 
sizeof(struct _drm_color_lut)),
-                     -EINVAL);
-       igt_assert_eq(pipe_set_property_blob_id(pipe, "GAMMA_LUT", 
pipe->crtc_id),
-                     -EINVAL);
-       igt_assert_eq(pipe_set_property_blob_id(pipe, "GAMMA_LUT", 4096 * 4096),
-                     -EINVAL);
+       if (kmstest_get_property(pipe->display->drm_fd,
+                                pipe->crtc_id,
+                                DRM_MODE_OBJECT_CRTC,
+                                "GAMMA_LUT",
+                                NULL, NULL, NULL)) {
+               igt_assert_eq(pipe_set_property_blob(pipe, "GAMMA_LUT",
+                                                    gamma_lut, 1),
+                             -EINVAL);
+               igt_assert_eq(pipe_set_property_blob(pipe, "GAMMA_LUT",
+                                                    gamma_lut, gamma_lut_size 
+ 1),
+                             -EINVAL);
+               igt_assert_eq(pipe_set_property_blob(pipe, "GAMMA_LUT",
+                                                    gamma_lut, gamma_lut_size 
- 1),
+                             -EINVAL);
+               igt_assert_eq(pipe_set_property_blob(pipe, "GAMMA_LUT",
+                                                    gamma_lut, gamma_lut_size 
+ sizeof(struct _drm_color_lut)),
+                             -EINVAL);
+               igt_assert_eq(pipe_set_property_blob_id(pipe, "GAMMA_LUT", 
pipe->crtc_id),
+                             -EINVAL);
+               igt_assert_eq(pipe_set_property_blob_id(pipe, "GAMMA_LUT", 4096 
* 4096),
+                             -EINVAL);
+       }
 
        free(degamma_lut);
        free(gamma_lut);
@@ -1144,7 +1156,16 @@ static void
 invalid_ctm_matrix_sizes(data_t *data)
 {
        igt_pipe_t *pipe = &data->display.pipes[0];
-       void *ptr = malloc(sizeof(struct _drm_color_ctm) * 4);
+       void *ptr;
+
+       if (!kmstest_get_property(pipe->display->drm_fd,
+                                 pipe->crtc_id,
+                                 DRM_MODE_OBJECT_CRTC,
+                                 "CTM",
+                                 NULL, NULL, NULL))
+               return;
+
+       ptr = malloc(sizeof(struct _drm_color_ctm) * 4);
 
        igt_assert_eq(pipe_set_property_blob(pipe, "CTM", ptr, 1),
                      -EINVAL);
-- 
2.13.3

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to