none
Multi-monitor in WEC7 with displays of different resolution RRS feed

  • Question

  • Hi all,

    We had implemented multi-monitor on NXP's iMX6 WEC7 BSP earlier, for 2 LVDS displays of identical resolution.

    I'm trying to do this on one LVDS and one HDMI, with different resolution. This link for WinCE6.0 says that it doesn't work for monitors of different resolution. Whether this limitation still present in WEC7 too?

    I'm able to get the extended monitor now, GWES crashes when mouse cursor is moved to extreme right of second monitor.

    I'm following this thread, where Michel mentions about this issue. Is there any update on this? Whether any QFE solved this issue? Or can we do some workaround to prevent the crash? Any possibilities in IPU driver?

    Thanks.

    GNK

    • Edited by Keshava GN Thursday, August 24, 2017 8:44 AM Updated the title
    Friday, August 18, 2017 11:58 AM

Answers

  • Yes, that issue has been fixed long time ago. Our GuruCE iMX6 BSP fully supports having multiple displays (extended desktop) of differing resolutions. No problems with the mouse. Are you sure you've updated your WEC7 tree?

    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6

    • Marked as answer by Keshava GN Saturday, August 19, 2017 7:59 AM
    Friday, August 18, 2017 3:44 PM
    Moderator

All replies

  • Yes, that issue has been fixed long time ago. Our GuruCE iMX6 BSP fully supports having multiple displays (extended desktop) of differing resolutions. No problems with the mouse. Are you sure you've updated your WEC7 tree?

    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6

    • Marked as answer by Keshava GN Saturday, August 19, 2017 7:59 AM
    Friday, August 18, 2017 3:44 PM
    Moderator
  • Thanks Michel. I will check my update. Thanks for the confirmation...

    Do we need to update anything on our IPU driver for assisting this update?

    Saturday, August 19, 2017 4:42 AM
  • Thanks Michel. I will check my update. Thanks for the confirmation...

    Do we need to update anything on our IPU driver for assisting this update?

    No, no specific changes required to support the "mouse in nirvana" fix as far as I can remember, but of course you will need to do some work in your IPU driver to support multi (extended) display over different interfaces and with different resolutions.

    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6

    Saturday, August 19, 2017 6:36 AM
    Moderator
  • And Michel, one quick question.

    I'm able to get HDMI as primary screen and LVDS as extended monitor, ie: HDMI on DI0 and LVDS on DI1, on IPU1. But the other way (LVDS on DI0 and HDMI on DI1) is not working as expected (I was expecting it to work straightaway). On boot log I can't see any other differences than DI changes. Primary screen on LVDS is appearing, but the extended screen on HDMI is not working. Do you have any input on this?

    Thanks again.

    Keshava

    Saturday, August 19, 2017 7:23 AM
  • It's very hard to give you any pointers as it could be a million different things... You'll just have to make sure you are keeping to all restrictions of the IPU DI flows, set up your clocks correctly (and check that they are what you think they should be by outputting them over CKO1/2), etc. etc.


    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6

    Saturday, August 19, 2017 7:30 AM
    Moderator
  • Yes. Understood. We were doing these changes for implementing extended monitor for two LVDS, and for LVDS and HDMI...

    So, do you recommend continuing effort for these DI changes, or can I just keep DI same, and try to change the mode instead? I mean, keep LVDS on DI1 itself, and change the driver to make DI1 as primary? Is there any problems in this setup?

    Saturday, August 19, 2017 7:36 AM
  • I'm not sure if there would be any problems with that setup. We always have primary on DI0 unless a certain interface requires to be on a specific DI (this is true for some interface combinations).

    If I were you I would make sure I can have HDMI and LVDS on both DI0/1. If you can't, then something just ain't right, and you can't have something that just ain't right (and you don't understand why) in a robust embedded system. Everything must be accounted for and understood if you are to prevent any strange errors and strange behavior in your customer's end-products.

    PS. We can add support for iWave boards to our GuruCE iMX6 BSP. Contact us offline for licensing options if you are interested.


    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6

    Saturday, August 19, 2017 7:45 AM
    Moderator
  • If I were you I would make sure I can have HDMI and LVDS on both DI0/1. If you can't, then something just ain't right, and you can't have something that just ain't right (and you don't understand why) in a robust embedded system. Everything must be accounted for and understood if you are to prevent any strange errors and strange behavior in your customer's end-products.

    Yes. I agree with you... Thanks Michel.
    Saturday, August 19, 2017 7:58 AM
  • Hi Michel,

    Can you confirm if this was the crash that was observed when cursor was moving to no-mans land:

    PID:00400002 TID:0588003A Exception 'Data Abort' (0x4): Thread-Id=0588003a(pth=c0878cec), Proc-Id=00400002(pprc=8429f5e0) 'NK.EXE', VM-active=04dc0042(pprc=c087ce00) 'explorer.exe'
    PID:00400003 TID:0588003A PC=eff36330(k.coredll.dll+0x00056330) RA=eee27bf8(ddraw_ipu.dll+0x00017bf8) SP=d618fd30, BVA=d5ecd000

    This crash is pointing to CursorOn function.

    Or could this be a different issue?

    Hmm. The crash is being observed inside the IPU driver, so I guess this is a different crash than the one you were mentioning. I shall proceed with debugging the IPU driver!

    Thanks.

    • Edited by Keshava GN Tuesday, August 22, 2017 6:39 AM
    Tuesday, August 22, 2017 6:04 AM
  • Yep, different crash. The mouse cursor in no-mans land crash was inside GWES.exe, hence we needed MS to fix it back then.

    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6

    Tuesday, August 22, 2017 7:51 AM
    Moderator
  • Hi Michel.

    In your answer,

    +--------+------------+
    | monitor|                   |
    |  1          |   monitor   |
    +--------+    2            |
    |   no       |                   |
    |  mans    |                   |
    |-- land--+------------+
    

    The no-mans-land indicates the part of display which we can't see, right? ie: If monitor 1 is smaller resolution and is primary display (with wec7 icons), we can't see WEC7 taskbar. Whether my understanding is correct?

    Thanks.

    Thursday, August 24, 2017 7:12 AM
  • No, you should always see the full desktop on the primary screen (including taskbar etc). The problem was if you would move the mouse from monitor 1 right to monitor 2, then down on monitor 2 and then left into "no-man's-land". GWES would crash there, but this GWES bug has long since been fixed by MS.

    You can download one of the GuruCE i.MX6 BSP evaluation kernels for WEC7 & WEC2013 to see how it should work.


    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6

    Thursday, August 24, 2017 7:19 AM
    Moderator
  • In the above case, whether the primary monitor is of higher resolution or secondary monitor? What would happen if it's the other way?

    Thanks for the support, Michel.

    Thursday, August 24, 2017 7:45 AM
  • It doesn't matter. In your example the primary monitor is smaller resolution than the secondary.

    The full desktop will still be shown on the primary monitor, and an extra "blank" desktop will be shown on the secondary monitor.

    Same happens if you reverse this. Resolutions DO NOT MATTER.

    Primary always shows the full desktop (taskbar, etc). Secondary monitor shows the desktop wallpaper background without taskbar.

    You can move windows in between the monitors without any issues.

    Again, just download one of the GuruCE i.MX6 BSP evaluation kernels for WEC7 & WEC2013 to see how it should work.


    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6


    Thursday, August 24, 2017 7:53 AM
    Moderator
  • Okay, You would consider the lower values (of height and width) of  both the monitors, right?

    So whether the actual support (having both the monitors fully covered according to it's resolution, you can consider as stretching) on two different resolution monitors is not available on WinCE right? Or is it possible to implement if IPU driver is modified?

    Thanks Michel.

    • Edited by Keshava GN Thursday, August 24, 2017 8:31 AM
    Thursday, August 24, 2017 8:30 AM
  • Okay, You would consider the lower values (of height and width) of  both the monitors, right?

    No, we set monitor 1 to it's resolution (say 320x240), and monitor 2 to it's own resolution (say 1920x1080) (or vice versa, again, resolutions or their order don't matter).

    So whether the actual support (having both the monitors fully covered according to it's resolution, you can consider as stretching) on two different monitors is not available on WinCE right? Or is it possible to implement if IPU driver is modified?

    There is no stretching. It's really the full resolution of each monitor. Of course you will need to do a LOT of work in the IPU driver to make this work. We've done an almost complete rewrite of the IPU driver... There are no limitations in CE with regards to multi-monitor and extended desktop, apart from the restriction that only side-by-side configurations are allowed. So; primary monitor is always on the left, secondary is always on the right of the primary monitor aligned at the top:

    +-----------320-+------------------------1920-+
    |               |                             |
    |   primary     2                             |
    |   display     4                             |
    |               0                             |
    +---------------+         secondary           |
                    |          display            |
                    |                             1
                    |                             0
                    |                             8
                    |                             0
                    +-----------------------------+

    or:

    +------------------------1920-+-----------320-+
    |                             |               |
    |                             |   secondary   2
    |                             |    display    4
    |                             |               0
    |          primary            +---------------+
    |          display            |
    |                             1
    |                             0
    |                             8
    |                             0
    +-----------------------------+

    With the primary display always showing the entire desktop (including taskbar) and the secondary display showing just the desktop background.


    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6


    Thursday, August 24, 2017 8:49 AM
    Moderator
  • Thanks a lot for the help, Michel.
    Thursday, August 24, 2017 8:55 AM
  • Sorry Michel, It took some time to visualize the things, as I didn't see one working setup with different res monitors on WinCE :( (Don't have a HW setup for testing your binaries) Understood now.

    How will be the mouse cursor movement in no-mans-land? Example, moving the mouse in bottom right of primary to secondary, would the mouse cursor land directly in bottom left of secondary? Or would you take the mouse upwards to get the cursor on secondary screen?

    • Edited by Keshava GN Thursday, August 24, 2017 9:04 AM
    Thursday, August 24, 2017 9:02 AM
  • GWES will not allow the mouse to move into no-mans-land.

    Taking my first multi-monitor setup (primary: 320x240, secondary 1920x1080):

    Example: moving the mouse from the secondary monitor bottom left, diagonally up-left:

    The mouse cursor will stick to the left side of the 1920x1080 secondary monitor until it reaches the bottom right of the primary display and then it will be allowed to move onto the primary display. The cursor will appear at 320x240 on the primary display.

    Example: moving the mouse from the bottom right of the primary monitor to the right onto the secondary display:

    The mouse cursor will appear at 0, 240 on the secondary display.


    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6


    Thursday, August 24, 2017 9:10 AM
    Moderator
  • Great. Thanks a lot, Michel.
    Thursday, August 24, 2017 9:14 AM
  • Hi Michel,

    I haven't re-written the IPU driver, but I was trying to change the existing FSL driver to accommodate the extended mode. This is working fine for two displays of same resolution.

    The original crash that I'm experiencing is because of the display resolution change in my new hw. 

    The cursor is trying to go beyond the boundaries of extended monitor.

    Example: Primary monitor is 1024x768 and secondary is 800x480, but the first argument for the function MovePointer for secondary monitor gets values more than 800 which results in this unexpected behaviour.

    My system metrics shows the width as 2048 (Width1 * 2 instead of width1+width2).

    But I'm setting the separate values of width and height as needed for GPE1 and GPE2 objects in my IPU driver.

    Which value the gwes is considering?

    Any insights on this?

    Thanks..

    Monday, August 28, 2017 11:11 AM
  • Did you do all that is discussed in this MSDN article?


    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6

    Monday, August 28, 2017 11:27 AM
    Moderator
  • I had referred the link and did the changes for IPU drivers according to the ATI driver, but did a stupid mistake. :( Now I'm changing the resolution of secondary monitor.

    Now that I'm able to get the "actual" resolutions on corresponding monitors, the mouse pointer is not going beyond the second monitor.

    Example: If I try to move the mouse beyond width of secondary monitor (800x480), mouse is not moving beyond the boundary and no crash is observed.

    But if I move the mouse from the bottom right of primary to secondary, the mouse actually "moves" in no-mans-land. That is, it is not restricted to the edge of primary monitor, but goes into no-mans-land (but without calling MovePointer function) and if mouse moved upwards, it appears in secondary monitor. Below is the prints of cursor coordinates, when I move from primary (1024x768) to secondary (800x480):

    x 999, y 767
    x 1001, y 767
    x 1002, y 767
    x 1003, y 767
    x 1004, y 767
    x 1006, y 767
    x 1007, y 767
    x 1008, y 767
    x 1009, y 767
    x 1011, y 767
    x 1012, y 767
    x 1013, y 767
    x 1014, y 767
    x 1016, y 767
    x 1017, y 767
    x 1018, y 767
    x 1019, y 767
    x 1021, y 767
    x 1022, y 767
    x 1023, y 767
    x 1024, y 767

    <Mouse is moving in no-mans-land till it appears at h=480 and w=188 of secondary>

    x -1, y -1
    x 188, y 480
    x 188, y 478
    x 188, y 477
    x 188, y 476
    x 188, y 475
    x 187, y 474
    x 187, y 473
    x 187, y 472
    x 187, y 471
    x 187, y 470
    x 187, y 468

    Any ideas?

    Thank you.

    Edit: Now the system metric gives: 1824 x 768.

    Edit: 

    The same happens when mouse is moved to no-mans-land from sec display.

    Cursor is not physically moving. It gets sticks to the place where mouse is "moved" to no-mans-land, and moves suddenly when moved back to sec display...

    • Edited by Keshava GN Monday, August 28, 2017 3:06 PM additional info
    Monday, August 28, 2017 1:18 PM
  • BTW, Is it possible to play dshow video on second screen, Michel?

    Thanks

    Wednesday, September 6, 2017 2:01 PM
  • No, due to a limitation in the DDRAW implementation you can only have a single display as DDRAW surface. You can play video using OpenGL on both screens though.


    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: https://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    NXP Proven Partner
    https://guruce.com
    Consultancy, training and development services.

    Interested in WEC on i.MX6?
    Get the only 100% stable and best performing i.MX6 BSP for WEC7 and WEC2013 here: https://guruce.com/imx6

    Wednesday, September 6, 2017 4:33 PM
    Moderator
  • Regarding the mouse/cursor issue, the cursor doesn't "move" into the no mans land, but it doesn't move along the border if I move it diagonally in no mans land. The cursor sticks to the boundary if higher res monitor, and appears to lower res monitor in between. Not in the corner.

    Below are the pics:

    1: When try to move from FHD HDMI (secondary) to (800x480) LVDS primary.

    Link1

    2: Doesn't appear on corner but appears on (x,480) in (800x480) LVDS primary.

    Link2

    Let me know your ideas. Thanks.

    • Edited by Keshava GN Thursday, September 7, 2017 5:04 AM
    Thursday, September 7, 2017 5:02 AM
  • Hi Michel, one more quick query, few desktop icons are hidden beyond the taskbar on my low-resolution primary monitor. I can access it by pressing down arrow button on keyboard. But not able to reach it using mouse. Taskbar is in proper place, but only desktop icons are not auto-arranging according to primary monitor resolution.
    Friday, September 8, 2017 3:22 AM