This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Silverlight will not run on WEC7 with 2.0 BSP on OMAP3530

Other Parts Discussed in Thread: OMAP3530

I am currently working on building the 2.0 BSP (BSP_WINCE_ARM_A8_02_00_00_Source) for a platform using the OMAP3530 (beagleboard rev. c3) with WEC7 (completely updated as of yesterday). The BSP was given minor adjustments to support the beagleboard's DVI and USB-Host features. Currently, everything except for Silverlight works perfectly fine, but my project requires Silverlight support. I have looked over every Silverlight related post in this forum, and I have still not found a solution.

I have VRFB disabled, BSP_XRPLUGIN_OPENGL enabled, PowerVR SGX Core Revision 121 selected, and Silverlight catalog items added to the design (including photo viewer, video player, music player, xamlperf). 

I have tried designs with and without 720p codec (currently without to ensure ram is not an issue), with and without the compositor (currently without due to a massive increase in performance), with both the standard shell and the Silverlight sample shell (currently standard), and at multiple resolutions (800x600 and 1280x720p).

If it is needed, i can get more information on my design from my current pbxml, but for now I will just explain what occurs when I try to use Silverlight based items.

The first Silverlight feature I have generally been testing with is XAMLPERF, the example silverlight on screen keyboard. What I have witnessed is that when Windows Compositor is on, opening XAMLPERF results in a frame being displayed that was entirely filled in black. With the compositor disabled, opening XAMLPERF results in a empty looking frame being displayed.With OAL Retail Messages enabled, I was able to see that each time XAMLPERF opened, an error would occur claiming that shaders.dll could not be found. I explored NK.bin to find that shaders.dll was not included, and I explored the release directory to find that shaders.dll was in the folder. Well hoping a hack would fix this issue, I added shaders.dll to platform.bib. The error went away, no additional errors occur, but the display issue with XAMLPERF did not.

I tested both the video player and music player, and found very similar display results to that of XAMLPERF. Interestingly enough, music and video produce audio when played despite the display issue. I noticed the video player windows is black when a video is being played with or without the compositor enabled. Furthermore, when a video is being played, the upper left corner of the screen has two overlapping buttons. On the top is what appears to be the fullscreen symbol used in video players, and on the bottom is what appears to be the symbol of a speaker used for volume in video players. Both buttons glow blue when clicked, but nothing happens. With OAL Retail Messages enabled and the compositor disabled, opening the video player, the music player, and the photo viewer causes an error that goes something like this:

PID:01D7023A TID:07B900F2 CEMP: Create AlchemyWindowPID:01D7023A TID:07B900F2 WS
EGL_CreateWindowDrawable(): Failed to get Alloc DDraw surfacePID:01D7023A TID:07
B900F2 ERROR: COpenGLDevice[1]::CreateDisplaySurface(): eglCreateWindowSurface()
= 0x3001PID:01D7023A TID:07B900F2 ERROR: COpenGLDevice::Initialize(), hr = 0x80
004005

I'm new to working with WinCE (or WEC, w/e they want to call it), and I haven't had much experience working with OpenGL, but based on another forum post I saw, I'm thinking that error is related to the compositor being disabled. Not really sure though, and since my Silverlight display issue occurs with or without the compositor, that doesn't really help the situation.

Moving on, PowerVR OpenGL demo's that come with the sample BSP's work (OGLES: 2FilmTV, 2Skybox2, 2Water, CoverFlow, OVase, Vase). I noticed that when the Window Compositor catalog item is disabled, the demos run smooth and fast, but with the compositor enabled, demo's drop in framerate by about 30% and run choppy and sluggish.

The last thing I thought may be worth mentioning is that I have plenty of ram free, so I don't suspect that is the issue. The system was struggling with 720p codecs enabled, so I disabled the feature and now I have no problem. 

Any help would be appreciated, and if requested I will supply additional information.

  • Thanks for the detailed explanation. The only reason compositor was enabled in BSP 2.0 was because the players (music, video etc) had a dependency on it in the first WEC7 GA release from Microsoft.

    In WEC7 update 3 the dependency was removed by Microsoft. And we had observed the same thing as you that when compositor is enabled the performance degrades significantly. In upcoming release we plan to disable the compositor by default (with a dependency on wec7 update 3 or later).

    I believe the shaders issue you faced is harmless since it will do a dynamic compile using shader compiler. 

    1. What WEC7 update are you on (your post seems to indicate you are on the latest). But just to confirm if you don't have WEC7 update 3 atleast then I suggest you upgrade to that. 

    2. Can you compare your os design to the default one that is supplied in BSP 2.0 release just to make sure nothing (other than the ones you mentioned is different). For e.g., the ddraw catalog entry should be enabled. 

    3. To debug your issue further, can you first try the suggestion on this link http://processors.wiki.ti.com/index.php/WinCE-BSP_ARM-A8_User_Guide#WEC7_BSP  

    This is for the std silverlight demos that were part of Wince6 but not in wec7 but the procedure should help run it on wec7. The procedure mentioned definitely worked for BSP 2.0.

    4. Under the BSP catalog items (same place where you would have disabled vrfb) there is an entry called "enable ISP resizer". Disable that and see if it makes a difference. I vaguely remember some connection with that and VRFB creating memory issues.

    Based on the result above we can see how to proceed 

  • Thank you for the quick reply. Still no luck, but here is what I did:

    1. Check WEC7 Updates for Update 3

    When I go to customize the windows embedded installation, it says I am up to date through December 2011 and the summary includes Update 3.

    2. Default config comparison (EVM_3530.pbxml)

    I didn't see anything missing that I needed, but I have included additional catalog items. Nothing stood out to me as potentially problematic (aside from the fact that the EVM had SGX 125 selected, but everything else says I should be using 121). DDRAW is and was included. If you'd like i will post the catalog items and enviorment variables from my pbxml.

    3. http://processors.wiki.ti.com/index.php/WinCE-BSP_ARM-A8_User_Guide#WEC7_BSP:

    I actually had visited the site before, but nothing in my build seemed out of place or missing. I double checked the following major steps:

    Silverlight for Windows embedded is enabled

    BSP_XRPLUGIN_OPENGL enviorment variable set

    4. ISP Resizer

    It is and was disabled. I had also tried it with this enabled, but no luck.

    If it assists in figuring out what I'm doing wrong, I had also previously built the EVM3530 BSP that is included with the WEC7 ARMV7 install. I succeeded in building it just as well, but same exact silverlight issue was experienced. After having the issue and visiting these forums, I realized how out of date the build was and I downloaded BSP_WINCE_ARM_A8_02_00_00_Source from the TI site. I created a new build based on the newer BSP and migrated the hardware adjustments for the beagleboard into the design. While I was very pleased with the improved organization and features in this bsp, the silverlight issue still existed.

    Thank you for your assistance, and I look forward to your comments.

  • Regarding point #2: If you are using OMAP35x then you need to enable Rev121. If you hover the mouse over the catalog items I think it should say for which processors you should select each of those catalog items. (and unlike in the BSP for Wince6 you cannot enable both rev121 and rev125).

    Regarding point #3: Did you try running the silverlight demos (bounce, carousel, bubbles) as mentioned in that wiki article? I wanted to see if that succeeds for you or not. As the article explains it does involve copying some files from the release for wince6 since Microsoft no longer provides those files in WEC7.

    I assume you don't have an EVM on which you can run the stock demo image that was released as part of BSP 2.0.

  • No I don't have the EVM, and the demo images are incompatible with the beagle board due to hardware differences.

    Based on the wiki page and the mouse however, I had previously determined 121 was the revision i needed, but I just thought I would clarify that. At least I can rule that out.

    I happened to have built 6.0R3 for the beagleboard about 2 years back for a college project, and I honestly couldn't recall the silverlight apps working back then either. Most other things did though. The good news is that I have a backup of the WINCE600 folder and grabbed all of the demo files (including png's, .xaml's, and xamlperf.xex). When I try to run bubbles, and a task bar item is added titled "Xaml App(TI Version). The window display is blank just as the other attempts to run Silverlight apps were. The following is the terminal output on my pc that streams so long as the application is open (continuous and seemingly repeating, as shown below):

    PID:067F0342 TID:063D024E WSEGL_CreateWindowDrawable(): Failed to get Alloc DDra
    w surfacePID:067F0342 TID:063D024E ERROR: COpenGLDevice[1]::CreateDisplaySurface
    (): eglCreateWindowSurface() = 0x3001PID:067F0342 TID:063D024E ERROR: COpenGLDev
    ice::Initialize(), hr = 0x80004005PID:067F0342 TID:063D024E WSEGL_CreateWindowDr
    awable(): Failed to get Alloc DDraw surfacePID:067F0342 TID:063D024E ERROR: COpe
    nGLDevice[1]::CreateDisplaySurface(): eglCreateWindowSurface() = 0x3001PID:067F0
    342 TID:063D024E ERROR: COpenGLDevice::Initialize(), hr = 0x80004005PID:067F0342
    TID:063D024E WSEGL_CreateWindowDrawable(): Failed to get Alloc DDraw surfacePID
    :067F0342 TID:063D024E ERROR: COpenGLDevice[1]::CreateDisplaySurface(): eglCreat
    eWindowSurface() = 0x3001PID:067F0342 TID:063D024E ERROR: COpenGLDevice::Initial
    ize(), hr = 0x80004005PID:067F0342 TID:063D024E ERROR: C:\WINCE600\public\common
    \sdk\inc\XRPtr.h line 33: PID:067F0342 TID:063D024E HR=0x80004003 XRPtr Error (Y
    ou are about to dereference a NULL pointer!) in XRPtr<class IXRTextBlock>::opera
    tor ->PID:067F0342 TID:063D024E Exception 'Data Abort' (0x4): Thread-Id=063d024e
    (pth=c04d50d8), Proc-Id=067f0342(pprc=c04ee7c0) 'xamlperf.exe', VM-active=067f03
    42(pprc=c04ee7c0) 'xamlperf.exe'
    PID:067F0342 TID:063D024E PC=00012710(xamlperf.exe+0x00002710) RA=00012708(xamlp
    erf.exe+0x00002708) SP=0002f9b4, BVA=00000000
    PID:067F0342 TID:063D024E WSEGL_CreateWindowDrawable(): Failed to get Alloc DDra
    w surfacePID:067F0342 TID:063D024E ERROR: COpenGLDevice[1]::CreateDisplaySurface
    (): eglCreateWindowSurface() = 0x3001PID:067F0342 TID:063D024E ERROR: COpenGLDev
    ice::Initialize(), hr = 0x80004005PID:067F0342 TID:063D024E ERROR: C:\WINCE600\p
    ublic\common\sdk\inc\XRPtr.h line 33: PID:067F0342 TID:063D024E HR=0x80004003 XR
    Ptr Error (You are about to dereference a NULL pointer!) in XRPtr<class IXRTextB
    lock>::operator ->PID:067F0342 TID:063D024E Exception 'Data Abort' (0x4): Thread
    -Id=063d024e(pth=c04d50d8), Proc-Id=067f0342(pprc=c04ee7c0) 'xamlperf.exe', VM-a
    ctive=067f0342(pprc=c04ee7c0) 'xamlperf.exe'
    When i run the sample .avi from the 2.0 BSP demo builds with the video player application, the following is the repeating cyclical output on my pc terminal:
    PID:079F03FE TID:07D104FE CEMP: EngineInitThread id=130286574 PID:079F03FE TID:0
    7D104FE WSEGL_CreateWindowDrawable(): Failed to get Alloc DDraw surfacePID:079F0
    3FE TID:07D104FE ERROR: COpenGLDevice[1]::CreateDisplaySurface(): eglCreateWindo
    wSurface() = 0x3001PID:079F03FE TID:07D104FE ERROR: COpenGLDevice::Initialize(),
    hr = 0x80004005PID:079F03FE TID:07D104FE WSEGL_CreateWindowDrawable(): Failed t
    o get Alloc DDraw surfacePID:079F03FE TID:07D104FE ERROR: COpenGLDevice[1]::Crea
    teDisplaySurface(): eglCreateWindowSurface() = 0x3001PID:079F03FE TID:07D104FE E
    RROR: COpenGLDevice::Initialize(), hr = 0x80004005PID:079F03FE TID:07D104FE WSEG
    L_CreateWindowDrawable():

    The major commonalities between the errors that I can see are CreateWindowDrawable() and CreateDisplaySurface(). Based on the words in function names (Window Drawable, Display Surface) and the fact that my issue seems to be display related with Silverlight, I am inclined to believe this in no coincidence. As you seem much more knowledgeable on this subject, I was hoping that point may assist in determining what I have done wrong.

    As well, seeing as how I have had this issue in two (possibly three) builds based on different BSP's, I am inclined to believe that my issue is related to including or excluding something from the catalog when I build. I can't think of anything I have excluded, but I was wondering if you knew of anything from the Core OS catalog items that when included could cause conflicts or possibly override another item that I need? Please understand that I am still fairly inexperienced with WinCE, and it is entirely possible I have mixed catalog items that experienced people wouldn't even consider.

    Thank you again for your help, and I look forward to your response.

  • Thanks again for the help, but I think I figured out what I was doing wrong. As I said, I am newer to working with CE, and so I was unaware of the fact that I needed to add the dvsdk to the subprojects section in the solution explorer. The catalog items were checked off, and so I thought it was included, but it seems I was mistaken. After adding this and doing a sysgen, I was able to play video in the video player and run both carousel.xaml and bubbles.xaml. A few display issues still exist with the viewers, and I suspect cleaning and rebuilding should fix this.

  • Good to know that you are able to proceed. 

    For video playback dvsdk is needed. But your issue was about silverlight apps not working and not video playback not working.

    Silverlight apps have no connection to dvsdk. So silverlight apps working due to addition of dvsdk does not make sense. Maybe something else got included/cleaned up while you were doing this. 

    Ofcourse do a clean build solution with your latest change and make sure everything is working fine.

  • You are correct. The clean build did not fully resolve the issue. I can't say I'm that surprised, as I was under the same impression that the dvsdk components were separate from Silverlight. None the less, progress was made with both video playback and Silverlight issue. 

    What I am seeing now:

    Selecting a video will open the video player and display the video. The background is black, and the fullscreen/volume buttons exists, but overlap. The full screen button works, but the volume seems to have no effect. Opening the video player without a video displays an empty window.

    The picture viewer has similar results to the video player.

    The music player plays music, but nothing is displayed.

    XAMLPERF still does not work and displays an empty window.

    All OpenGL PowerVR demos work very well, except for the chameleon man.

    Silverlight demo apps bubbles and carousel display properly now.

    So despite the fact the dvsdk shouldn't have had an impact on Silverlight display functionality, it seems it did. I'll have to work off of that point while I try and resolve the Silverlight issue completely. Currently I am considering the fact that each of the Silverlight apps with restored display functionality all are using external media when they work (video player, picture viewer, carousel and bubbles [they use external png's]). That's the only rational I have so far, and it's a stretch.

    As a positive note, my beagleboard build currently has DVI-output, a 19" USB resistive touch panel, and USB WiFi all running fairly well with the OS. The WiFi driver has a little trouble getting connected, but once it does it is stable (streaming audio and video over an hour on a local network without crashing).

    Thanks again for the help and advise. If you have any more to give, i would appreciate it.

  • Couple of points about your last post.

    1. Chameleonman works fine in our test. Which chameleonman executable are you using? You should use the executables that are included as part of the WinCE SDK release under Graphics delivery. (on the same page as where you would have downloaded the BSP delivery you will see a download entry called WINCE_GFX_SGX_02_00_00_setup.exe. This has the PowerVR DDK binaries as well as PowerVR-SDK and prebuilt demos. If you try to use executables from older releases they may not work due to dependency on the latest DDK. Similarly if you have your own graphics application you should recompile with the latest SDK libraries.

    2. XAMLPERF does not work: My understanding is that XAMLPERF by itself does not do anything. It is an environment to launch xml based apps (such as bounce, carousel, bubbles etc). Since you were able to get bubbles, carousel to work I'm assuming that xamlperf works as intended. If you just run xamlperf without cmd line arguments it should print something on the terminal with some message about correct usage.

    Hope this helps.

  • Thanks for the advice Jatin Jain.

    I was using an older version of the chamelionman. I don't have any problems now with the latest.

    When I mentioned  XAMLPERF, I was referring to the sample Silverlight keyboard.