Op 07-03-16 om 13:50 schreef Lionel Landwerlin:
> Hi Pratik,
>
> I'm really looking forward to get this merged.
> Just a few comments on the plane commit part below.

Would the following diff to the patch satisfy you? It would clean up things a 
lot.

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 1f738e14f52f..454ff7552b4a 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -1534,14 +1534,6 @@ igt_atomic_prepare_plane_commit(igt_plane_t *plane, 
igt_output_t *output,
 
        igt_display_t *display = output->display;
        uint32_t fb_id, crtc_id;
-       uint32_t src_x;
-       uint32_t src_y;
-       uint32_t src_w;
-       uint32_t src_h;
-       int32_t crtc_x;
-       int32_t crtc_y;
-       uint32_t crtc_w;
-       uint32_t crtc_h;
 
        igt_assert(plane->drm_plane);
 
@@ -1552,54 +1544,30 @@ igt_atomic_prepare_plane_commit(igt_plane_t *plane, 
igt_output_t *output,
        fb_id = igt_plane_get_fb_id(plane);
        crtc_id = output->config.crtc->crtc_id;
 
-       if ((plane->fb_changed || plane->size_changed) && fb_id == 0) {
-
-               LOG(display,
-                   "%s: populating plane data: pipe %s, plane %d, disabling\n",
-                    igt_output_name(output),
-                    kmstest_pipe_name(output->config.pipe),
-                    plane->index);
-
-               /* populate plane req */
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_CRTC_ID, 0);
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_FB_ID, 0);
-
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_SRC_X, 
IGT_FIXED(0, 0));
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_SRC_Y, 
IGT_FIXED(0, 0));
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_SRC_W, 
IGT_FIXED(0, 0));
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_SRC_H, 
IGT_FIXED(0, 0));
-
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_CRTC_X, 0);
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_CRTC_Y, 0);
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_CRTC_W, 0);
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_CRTC_H, 0);
-
-       } else if (plane->fb_changed || plane->position_changed ||
-                       plane->size_changed) {
-
-               src_x = IGT_FIXED(plane->fb->src_x, 0); /* src_x */
-               src_y = IGT_FIXED(plane->fb->src_y, 0); /* src_y */
-               src_w = IGT_FIXED(plane->fb->src_w, 0); /* src_w */
-               src_h = IGT_FIXED(plane->fb->src_h, 0); /* src_h */
-               crtc_x = plane->crtc_x;
-               crtc_y = plane->crtc_y;
-               crtc_w = plane->crtc_w;
-               crtc_h = plane->crtc_h;
-
-               LOG(display,
-                   "%s: populating plane data: %s.%d, fb %u, src = (%d, %d) "
-                   "%ux%u dst = (%u, %u) %ux%u\n",
-                   igt_output_name(output),
-                   kmstest_pipe_name(output->config.pipe),
-                   plane->index,
-                   fb_id,
-                   src_x >> 16, src_y >> 16, src_w >> 16, src_h >> 16,
-                   crtc_x, crtc_y, crtc_w, crtc_h);
-
-
-               /* populate plane req */
-               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_CRTC_ID, 
crtc_id);
+       LOG(display,
+           "%s: populating plane data: %s.%d, fb %u, src = (%d, %d) "
+           "%ux%u dst = (%u, %u) %ux%u\n",
+           igt_output_name(output),
+           kmstest_pipe_name(output->config.pipe),
+           plane->index,
+           fb_id,
+           src_x >> 16, src_y >> 16, src_w >> 16, src_h >> 16,
+           crtc_x, crtc_y, crtc_w, crtc_h);
+
+       if (plane->fb_changed) {
+               igt_atomic_populate_plane_req(req, plane, IGT_PLANE_CRTC_ID, 
fb_id ? crtc_id : 0);
                igt_atomic_populate_plane_req(req, plane, IGT_PLANE_FB_ID, 
fb_id);
+       }
+
+       if (plane->position_changed || plane->size_changed) {
+               uint32_t src_x = IGT_FIXED(plane->fb->src_x, 0); /* src_x */
+               uint32_t src_y = IGT_FIXED(plane->fb->src_y, 0); /* src_y */
+               uint32_t src_w = IGT_FIXED(plane->fb->src_w, 0); /* src_w */
+               uint32_t src_h = IGT_FIXED(plane->fb->src_h, 0); /* src_h */
+               int32_t crtc_x = plane->crtc_x;
+               int32_t crtc_y = plane->crtc_y;
+               uint32_t crtc_w = plane->crtc_w;
+               uint32_t crtc_h = plane->crtc_h;
 
                igt_atomic_populate_plane_req(req, plane, IGT_PLANE_SRC_X, 
src_x);
                igt_atomic_populate_plane_req(req, plane, IGT_PLANE_SRC_Y, 
src_y);
@@ -1610,18 +1578,15 @@ igt_atomic_prepare_plane_commit(igt_plane_t *plane, 
igt_output_t *output,
                igt_atomic_populate_plane_req(req, plane, IGT_PLANE_CRTC_Y, 
crtc_y);
                igt_atomic_populate_plane_req(req, plane, IGT_PLANE_CRTC_W, 
crtc_w);
                igt_atomic_populate_plane_req(req, plane, IGT_PLANE_CRTC_H, 
crtc_h);
-
-               if (plane->rotation_changed)
-                       igt_atomic_populate_plane_req(req, plane,
-                               IGT_PLANE_ROTATION, plane->rotation);
-
        }
 
+       if (plane->rotation_changed)
+               igt_atomic_populate_plane_req(req, plane,
+                       IGT_PLANE_ROTATION, plane->rotation);
+
        plane->fb_changed = false;
        plane->position_changed = false;
        plane->size_changed = false;
-
-       return;
 }
 
 

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to