Thread (6 messages) 6 messages, 3 authors, 2021-06-09

Re: [igt-dev] [PATCH] tests/kms_atomic: Match overlay size with primary plane on amdgpu

From: Rodrigo Siqueira <hidden>
Date: 2021-06-09 19:24:33

On 06/07, Mark Yacoub wrote:
On Mon, May 31, 2021 at 4:03 PM Rodrigo Siqueira Jordao
[off-list ref] wrote:
quoted


On 2021-05-24 2:42 p.m., Mark Yacoub wrote:
quoted
From: Mark Yacoub <redacted>

[Why]
AMDGPU has a restriction of not allowing overlay planes that do
not fully cover the primary plane when the cursor is enabled.
Testing with an overlay smaller than primary fails the commit.

[How]
On amdgpu, force the overlay size and src to match the primary plane, but
test with a smaller size on all other platforms.
Hi Mark,

That's a nice patch, and I understand the background behind it. However,
I don't think we need to change kms_atomic, mainly because we are not
enabling cursor in this test. Also, I recently applied a patch for
dealing with cursors in this situation; this test does not fail in the
latest amd-staging-drm-next.

Thanks
Siqueira
Hi Siqueira, Thanks for letting me know. Would you mind backporting
this patch that fixes it on ChromeOS? or just point me to the right
commit and I can do that on my end. Thanks!
Hi Mark,

Tbh, I'm still not sure if ChromeOS wants my fix. We are discussing it
in a thread named:

  [PATCH] drm/amd/display: Fix overlay validation by considering cursors

If we decide to go ahead with that, I'll be glad to backport it to
ChromeOS for learn about the backport process.

Thanks
Siqueira
quoted
quoted
Signed-off-by: markyacoub@chromium.org
---
  tests/kms_atomic.c | 26 ++++++++++++++++++++------
  1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
index df9c9df7..d5bfd38c 100644
--- a/tests/kms_atomic.c
+++ b/tests/kms_atomic.c
@@ -491,13 +491,27 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe,
      igt_remove_fb(display->drm_fd, &fb_upper);
  }

-static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *plane)
+static void plane_overlay(igt_pipe_t* pipe, igt_output_t* output, igt_plane_t* plane, int drm_fd)
  {
      drmModeModeInfo *mode = igt_output_get_mode(output);
      uint32_t format = plane_get_igt_format(plane);
      struct igt_fb fb;
-     uint32_t w = mode->hdisplay / 2;
-     uint32_t h = mode->vdisplay / 2;
+     uint32_t w, h, x, y;
+
+     /* On AMD, with hardware cursor, overlay plane must fully cover the primary plane.
+      * Test with smaller overlays on all other platforms. */
+     if (is_amdgpu_device(drm_fd)) {
+             w = mode->hdisplay;
+             h = mode->vdisplay;
+             x = 0;
+             y = 0;
+     }
+     else {
+             w = mode->hdisplay / 2;
+             h = mode->vdisplay / 2;
+             x = w / 2;
+             y = h / 2;
+     }

      igt_require(format != 0);
@@ -505,7 +519,7 @@ static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *p
                            format, I915_TILING_NONE, &fb);

      igt_plane_set_fb(plane, &fb);
-     igt_plane_set_position(plane, w/2, h/2);
+     igt_plane_set_position(plane, x, y);

      /* Enable the overlay plane using the atomic API, and double-check
       * state is what we think it should be. */
@@ -519,7 +533,7 @@ static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *p
      /* Re-enable the plane through the legacy plane API, and verify through
       * atomic. */
      igt_plane_set_fb(plane, &fb);
-     igt_plane_set_position(plane, w/2, h/2);
+     igt_plane_set_position(plane, x, y);
      plane_commit(plane, COMMIT_LEGACY, ATOMIC_RELAX_NONE);

      /* Restore the plane to its original settings through the legacy plane
@@ -1113,7 +1127,7 @@ igt_main
              igt_require(overlay);

              atomic_setup(&display, pipe, output, primary, &fb);
-             plane_overlay(pipe_obj, output, overlay);
+             plane_overlay(pipe_obj, output, overlay, display.drm_fd);
      }

      igt_describe("Test for KMS atomic modesetting on primary plane and ensure coherency between "
-- 
Rodrigo Siqueira
https://siqueira.tech
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help