filevpedisplay: Change argument numbers for kmscube support
authorRamprasad N <x0038811@ti.com>
Thu, 4 May 2017 06:43:32 +0000 (12:13 +0530)
committerKarthik Ramanan <a0393906@ti.com>
Wed, 10 May 2017 10:43:12 +0000 (16:13 +0530)
filevpedisplay expects exactly 16 arguments. To test
filevpedisplay with kmscube as backend arguments required is
more than 16. Added check to return error if arguments are less
than 16.

Added changes to scale vpe output to display resolution.
If the vpe output resolution is greater than display resolution, then it
resulted in failure with kernel backtraces.

Also added code to SetCrtc first before SetPlane to avoid failure with
kernel backtraces.

Signed-off-by: Ramprasad N <x0038811@ti.com>
filevpedisplay.c
util/vpe-common.c

index a38a2dfbc00e1f795ed3360b40876a7bc2a488a0..13ec9d5b284ac9fda4b3a79c4086211cc0d6f7eb 100644 (file)
@@ -179,7 +179,8 @@ int main (int argc, char *argv[])
 
        struct  vpe *vpe;
 
-       if (argc != 16) {
+       /* No. of arguments is 16 or more. For kmscube based display it is 17 or more */
+       if (argc < 16) {
                printf (
                "USAGE : <SRCfilename> <SRCWidth> <SRCHeight> <SRCFormat> "
                        "<DSTWidth> <DSTHeight> <DSTformat> "
index 3383086bd058e8d5582aaf60faf2b8b7aeb51768..2fa2e975d9d99c91500dda2180135e63be9042fe 100755 (executable)
@@ -443,6 +443,9 @@ int vpe_output_init(struct vpe *vpe)
        if (!vpe->disp_bufs)
                pexit("allocating display buffer failed\n");
 
+       /* SetCrtc with an RGB buffer first */
+       disp_get_fb(vpe->disp);
+
        for (i = 0; i < NUMBUF; i++) {
                vpe->output_buf_dmafd[i] = omap_bo_dmabuf(vpe->disp_bufs[i]->bo[0]);
                vpe->disp_bufs[i]->fd[0] = vpe->output_buf_dmafd[i];
@@ -451,8 +454,8 @@ int vpe_output_init(struct vpe *vpe)
                        vpe->output_buf_dmafd_uv[i] = omap_bo_dmabuf(vpe->disp_bufs[i]->bo[1]);
                        vpe->disp_bufs[i]->fd[1] = vpe->output_buf_dmafd_uv[i];
                }
-               /* display only image widthxheight, no full screen */
-               vpe->disp_bufs[i]->noScale = true;
+               /* Scale back to display resolution */
+               vpe->disp_bufs[i]->noScale = false;
                dprintf("vpe->disp_bufs_fd[%d] = %d\n", i, vpe->output_buf_dmafd[i]);
        }