Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

FIX: Performance issues when you run a Silverlight for Windows Embedded application in Windows Embedded Compact 2013


View products that this article applies to.

This article describes an issue that occurs when you run a Silverlight for Windows Embedded application in Windows Embedded Compact 2013. An update is available to resolve this issue. Before you install this update, all previously issued updates for this product must be installed.

↑ Back to the top


Symptoms

Consider the following scenario:
  • You have a Microsoft Silverlight for Windows Embedded application installed on a Windows Embedded Compact 2013-based device.
  • The device has a single-core processor.
  • You enable the following board support package (BSP) environment variable in order to support OpenGL hardware acceleration for Silverlight for Windows Embedded:

    BSP_XRPLUGIN_OPENGL
In this scenario, you experience high CPU usage and performance problems when you run the application.

↑ Back to the top


Cause

This issue occurs because the Silverlight user interface (UI) thread sends the texture updates much faster than the rate at which the rendering thread can render them.

↑ Back to the top


Resolution

Download information

Windows Embedded Compact 2013 Monthly Update (October 2014) is now available from Microsoft. To download this Windows Embedded Compact 2013 monthly update, go to Microsoft OEM Online or MyOEM.

↑ Back to the top


More Information

Restart requirement

After you apply this update, you must perform a clean build of the whole platform. To do this, use one of the following methods:
  • On the Build menu, click Clean Solution, and then click Build Solution.
  • On the Build menu, click Rebuild Solution.
You do not have to restart the computer after you apply this software update.

Update replacement information

This update does not replace any other updates.
File information
The English version of this software update package has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time item in Control Panel.

Files that are included in this hotfix package


File nameFile sizeDateTimePath
Xamlruntimegraphics.h15,98217-Sep-201409:06Public\Common\Oak\Inc
Ddrawdevice.hpp6,78517-Sep-201409:06Public\Common\Oak\Xamlrenderplugin\Ddraw
Opengldevice.cpp66,07617-Sep-201409:06Public\Common\Oak\Xamlrenderplugin\Opengl
Opengldevice.hpp9,72417-Sep-201409:06Public\Common\Oak\Xamlrenderplugin\Opengl
Xrrendererddraw.lib2,40430-Sep-201415:17Public\Common\Oak\Lib\X86\Retail
Xrrendererddraw.exp1,13830-Sep-201415:17Public\Common\Oak\Lib\X86\Retail
Xrrendereropengl.lib2,40430-Sep-201415:17Public\Common\Oak\Lib\X86\Retail
Xrrendereropengl.exp1,14030-Sep-201415:17Public\Common\Oak\Lib\X86\Retail
Xrrendererddraw.lib2,40430-Sep-201415:16Public\Common\Oak\Lib\X86\Debug
Xrrendererddraw.exp1,13430-Sep-201415:16Public\Common\Oak\Lib\X86\Debug
Xrrendereropengl.lib2,40430-Sep-201415:16Public\Common\Oak\Lib\X86\Debug
Xrrendereropengl.exp1,14030-Sep-201415:16Public\Common\Oak\Lib\X86\Debug
Xrrendererddraw.lib2,40430-Sep-201415:17Public\Common\Oak\Lib\X86\Checked
Xrrendererddraw.exp1,13830-Sep-201415:17Public\Common\Oak\Lib\X86\Checked
Xrrendereropengl.lib2,40430-Sep-201415:17Public\Common\Oak\Lib\X86\Checked
Xrrendereropengl.exp1,14030-Sep-201415:17Public\Common\Oak\Lib\X86\Checked
Xrrendererddraw.lib2,38830-Sep-201415:18Public\Common\Oak\Lib\Armv7\Retail
Xrrendererddraw.exp1,13130-Sep-201415:18Public\Common\Oak\Lib\Armv7\Retail
Xrrendereropengl.lib2,38830-Sep-201415:18Public\Common\Oak\Lib\Armv7\Retail
Xrrendereropengl.exp1,13730-Sep-201415:18Public\Common\Oak\Lib\Armv7\Retail
Xrrendererddraw.lib2,38830-Sep-201415:17Public\Common\Oak\Lib\Armv7\Debug
Xrrendererddraw.exp1,13130-Sep-201415:17Public\Common\Oak\Lib\Armv7\Debug
Xrrendereropengl.lib2,38830-Sep-201415:17Public\Common\Oak\Lib\Armv7\Debug
Xrrendereropengl.exp1,13730-Sep-201415:17Public\Common\Oak\Lib\Armv7\Debug
Xrrendererddraw.lib2,38830-Sep-201415:18Public\Common\Oak\Lib\Armv7\Checked
Xrrendererddraw.exp1,13530-Sep-201415:18Public\Common\Oak\Lib\Armv7\Checked
Xrrendereropengl.lib2,38830-Sep-201415:18Public\Common\Oak\Lib\Armv7\Checked
Xrrendereropengl.exp1,13730-Sep-201415:18Public\Common\Oak\Lib\Armv7\Checked
Interactivity.dll102,40030-Sep-201415:15Public\Common\Oak\Target\X86\Retail
Interactivity.map261,17530-Sep-201415:15Public\Common\Oak\Target\X86\Retail
Interactivity.rel44,09930-Sep-201415:15Public\Common\Oak\Target\X86\Retail
Xamlruntime.dll802,81630-Sep-201415:15Public\Common\Oak\Target\X86\Retail
Xamlruntime.map1,373,39430-Sep-201415:15Public\Common\Oak\Target\X86\Retail
Xamlruntime.rel1,679,17730-Sep-201415:15Public\Common\Oak\Target\X86\Retail
Xamlruntimecore.dll2,879,48830-Sep-201415:15Public\Common\Oak\Target\X86\Retail
Xamlruntimecore.map1,811,15730-Sep-201415:15Public\Common\Oak\Target\X86\Retail
Xamlruntimecore.rel1,844,18730-Sep-201415:15Public\Common\Oak\Target\X86\Retail
Xrrendererddraw.dll24,57630-Sep-201415:17Public\Common\Oak\Target\X86\Retail
Xrrendererddraw.map28,96930-Sep-201415:17Public\Common\Oak\Target\X86\Retail
Xrrendererddraw.rel6,08030-Sep-201415:17Public\Common\Oak\Target\X86\Retail
Xrrendereropengl.dll32,76830-Sep-201415:17Public\Common\Oak\Target\X86\Retail
Xrrendereropengl.map51,39430-Sep-201415:17Public\Common\Oak\Target\X86\Retail
Xrrendereropengl.rel15,15730-Sep-201415:17Public\Common\Oak\Target\X86\Retail
Interactivity.dll253,95230-Sep-201415:14Public\Common\Oak\Target\X86\Debug
Interactivity.map580,63130-Sep-201415:14Public\Common\Oak\Target\X86\Debug
Interactivity.rel172,42430-Sep-201415:14Public\Common\Oak\Target\X86\Debug
Xamlruntime.dll1,687,55230-Sep-201415:14Public\Common\Oak\Target\X86\Debug
Xamlruntime.map2,584,43430-Sep-201415:14Public\Common\Oak\Target\X86\Debug
Xamlruntime.rel2,339,24630-Sep-201415:14Public\Common\Oak\Target\X86\Debug
Xamlruntimecore.dll7,512,06430-Sep-201415:14Public\Common\Oak\Target\X86\Debug
Xamlruntimecore.map5,373,33630-Sep-201415:14Public\Common\Oak\Target\X86\Debug
Xamlruntimecore.rel4,079,24630-Sep-201415:14Public\Common\Oak\Target\X86\Debug
Xrrendererddraw.dll45,05630-Sep-201415:16Public\Common\Oak\Target\X86\Debug
Xrrendererddraw.map49,05130-Sep-201415:16Public\Common\Oak\Target\X86\Debug
Xrrendererddraw.rel14,60630-Sep-201415:16Public\Common\Oak\Target\X86\Debug
Xrrendereropengl.dll151,55230-Sep-201415:16Public\Common\Oak\Target\X86\Debug
Xrrendereropengl.map275,81430-Sep-201415:16Public\Common\Oak\Target\X86\Debug
Xrrendereropengl.rel196,66830-Sep-201415:16Public\Common\Oak\Target\X86\Debug
Interactivity.dll139,26430-Sep-201415:15Public\Common\Oak\Target\X86\Checked
Interactivity.map503,29230-Sep-201415:15Public\Common\Oak\Target\X86\Checked
Interactivity.rel61,76030-Sep-201415:15Public\Common\Oak\Target\X86\Checked
Xamlruntime.dll1,167,36030-Sep-201415:15Public\Common\Oak\Target\X86\Checked
Xamlruntime.map2,416,32730-Sep-201415:15Public\Common\Oak\Target\X86\Checked
Xamlruntime.rel2,126,76330-Sep-201415:15Public\Common\Oak\Target\X86\Checked
Xamlruntimecore.dll6,316,03230-Sep-201415:15Public\Common\Oak\Target\X86\Checked
Xamlruntimecore.map5,330,36730-Sep-201415:15Public\Common\Oak\Target\X86\Checked
Xamlruntimecore.rel5,787,60730-Sep-201415:15Public\Common\Oak\Target\X86\Checked
Xrrendererddraw.dll32,76830-Sep-201415:18Public\Common\Oak\Target\X86\Checked
Xrrendererddraw.map48,89430-Sep-201415:18Public\Common\Oak\Target\X86\Checked
Xrrendererddraw.rel13,41730-Sep-201415:18Public\Common\Oak\Target\X86\Checked
Xrrendereropengl.dll77,82430-Sep-201415:18Public\Common\Oak\Target\X86\Checked
Xrrendereropengl.map167,64330-Sep-201415:18Public\Common\Oak\Target\X86\Checked
Xrrendereropengl.rel42,09830-Sep-201415:18Public\Common\Oak\Target\X86\Checked
Interactivity.dll98,30430-Sep-201415:15Public\Common\Oak\Target\Armv7\Retail
Interactivity.map446,02530-Sep-201415:15Public\Common\Oak\Target\Armv7\Retail
Interactivity.rel41,86630-Sep-201415:15Public\Common\Oak\Target\Armv7\Retail
Xamlruntime.dll765,95230-Sep-201415:15Public\Common\Oak\Target\Armv7\Retail
Xamlruntime.map2,421,08430-Sep-201415:15Public\Common\Oak\Target\Armv7\Retail
Xamlruntime.rel1,443,95830-Sep-201415:15Public\Common\Oak\Target\Armv7\Retail
Xamlruntimecore.dll2,789,37630-Sep-201415:15Public\Common\Oak\Target\Armv7\Retail
Xamlruntimecore.map3,970,70730-Sep-201415:15Public\Common\Oak\Target\Armv7\Retail
Xamlruntimecore.rel1,638,83830-Sep-201415:15Public\Common\Oak\Target\Armv7\Retail
Xrrendererddraw.dll28,67230-Sep-201415:18Public\Common\Oak\Target\Armv7\Retail
Xrrendererddraw.map45,79830-Sep-201415:18Public\Common\Oak\Target\Armv7\Retail
Xrrendererddraw.rel4,83330-Sep-201415:18Public\Common\Oak\Target\Armv7\Retail
Xrrendereropengl.dll36,86430-Sep-201415:18Public\Common\Oak\Target\Armv7\Retail
Xrrendereropengl.map81,27930-Sep-201415:18Public\Common\Oak\Target\Armv7\Retail
Xrrendereropengl.rel8,92230-Sep-201415:18Public\Common\Oak\Target\Armv7\Retail
Interactivity.dll233,47230-Sep-201415:15Public\Common\Oak\Target\Armv7\Debug
Interactivity.map1,928,32530-Sep-201415:15Public\Common\Oak\Target\Armv7\Debug
Interactivity.rel94,67530-Sep-201415:15Public\Common\Oak\Target\Armv7\Debug
Xamlruntime.dll1,773,56830-Sep-201415:14Public\Common\Oak\Target\Armv7\Debug
Xamlruntime.map9,783,36130-Sep-201415:15Public\Common\Oak\Target\Armv7\Debug
Xamlruntime.rel2,121,68830-Sep-201415:14Public\Common\Oak\Target\Armv7\Debug
Xamlruntimecore.dll7,467,00830-Sep-201415:14Public\Common\Oak\Target\Armv7\Debug
Xamlruntimecore.map20,735,84330-Sep-201415:14Public\Common\Oak\Target\Armv7\Debug
Xamlruntimecore.rel2,572,87030-Sep-201415:14Public\Common\Oak\Target\Armv7\Debug
Xrrendererddraw.dll49,15230-Sep-201415:17Public\Common\Oak\Target\Armv7\Debug
Xrrendererddraw.map99,57230-Sep-201415:17Public\Common\Oak\Target\Armv7\Debug
Xrrendererddraw.rel11,06830-Sep-201415:17Public\Common\Oak\Target\Armv7\Debug
Xrrendereropengl.dll131,07230-Sep-201415:17Public\Common\Oak\Target\Armv7\Debug
Xrrendereropengl.map590,68130-Sep-201415:17Public\Common\Oak\Target\Armv7\Debug
Xrrendereropengl.rel67,99530-Sep-201415:17Public\Common\Oak\Target\Armv7\Debug
Interactivity.dll163,84030-Sep-201415:16Public\Common\Oak\Target\Armv7\Checked
Interactivity.map1,156,97130-Sep-201415:16Public\Common\Oak\Target\Armv7\Checked
Interactivity.rel87,94730-Sep-201415:16Public\Common\Oak\Target\Armv7\Checked
Xamlruntime.dll1,228,80030-Sep-201415:16Public\Common\Oak\Target\Armv7\Checked
Xamlruntime.map5,666,81930-Sep-201415:16Public\Common\Oak\Target\Armv7\Checked
Xamlruntime.rel2,125,80630-Sep-201415:16Public\Common\Oak\Target\Armv7\Checked
Xamlruntimecore.dll6,107,13630-Sep-201415:15Public\Common\Oak\Target\Armv7\Checked
Xamlruntimecore.map14,902,70530-Sep-201415:16Public\Common\Oak\Target\Armv7\Checked
Xamlruntimecore.rel2,826,56230-Sep-201415:15Public\Common\Oak\Target\Armv7\Checked
Xrrendererddraw.dll36,86430-Sep-201415:18Public\Common\Oak\Target\Armv7\Checked
Xrrendererddraw.map78,26630-Sep-201415:18Public\Common\Oak\Target\Armv7\Checked
Xrrendererddraw.rel10,77830-Sep-201415:18Public\Common\Oak\Target\Armv7\Checked
Xrrendereropengl.dll81,92030-Sep-201415:18Public\Common\Oak\Target\Armv7\Checked
Xrrendereropengl.map235,54330-Sep-201415:18Public\Common\Oak\Target\Armv7\Checked
Xrrendereropengl.rel25,22030-Sep-201415:18Public\Common\Oak\Target\Armv7\Checked
Interactivity.dll178,86430-Sep-201412:56Public\Common\Oak\Bin\I386
Xamlruntimecore_dt.dll2,415,28030-Sep-201412:56Public\Common\Oak\Bin\I386
Xamlruntime_dt.dll1,133,23230-Sep-201412:56Public\Common\Oak\Bin\I386
Xrpack.exe281,26430-Sep-201412:56Public\Common\Oak\Bin\I386
Xamlruntime.exp1,88730-Sep-201415:15Public\Common\Sdk\Lib\X86\Retail
Xamlruntime.lib3,66430-Sep-201415:15Public\Common\Sdk\Lib\X86\Retail
Xamlruntime.exp1,88630-Sep-201415:14Public\Common\Sdk\Lib\X86\Debug
Xamlruntime.lib3,66430-Sep-201415:14Public\Common\Sdk\Lib\X86\Debug
Xamlruntime.exp1,88830-Sep-201415:15Public\Common\Sdk\Lib\X86\Checked
Xamlruntime.lib3,66430-Sep-201415:15Public\Common\Sdk\Lib\X86\Checked
Xamlruntime.exp1,88530-Sep-201415:15Public\Common\Sdk\Lib\Armv7\Retail
Xamlruntime.lib3,64230-Sep-201415:15Public\Common\Sdk\Lib\Armv7\Retail
Xamlruntime.exp1,88030-Sep-201415:14Public\Common\Sdk\Lib\Armv7\Debug
Xamlruntime.lib3,64230-Sep-201415:14Public\Common\Sdk\Lib\Armv7\Debug
Xamlruntime.exp1,88630-Sep-201415:15Public\Common\Sdk\Lib\Armv7\Checked
Xamlruntime.lib3,64230-Sep-201415:15Public\Common\Sdk\Lib\Armv7\Checked
Xamlruntime_dt.dll1,133,23230-Sep-201412:56Program files\Microsoft visual studio 11.0\Vc\Vcwizards\Windowsembeddedxamltools
Xamlruntimecore_dt.dll2,415,28030-Sep-201412:56Program files\Microsoft visual studio 11.0\Vc\Vcwizards\Windowsembeddedxamltools
Xrpack.exe281,26430-Sep-201412:56Program files\Microsoft visual studio 11.0\Vc\Vcwizards\Windowsembeddedxamltools
Interactivity.dll178,86430-Sep-201412:56Program files\Microsoft visual studio 11.0\Vc\Vcwizards\Windowsembeddedxamltools


Workaround information

Instantiating a new XAML class that inherits the ICustomGraphicsDevice class may trigger the following compiler error:

error C2259: '<classname>' : cannot instantiate abstract class

This issue is caused by the addition of four abstract functions in the ICustomGraphicsDevice class for this hotfix.

To work around this issue, implement the following abstract functions in your class that inherits ICustomGraphicsDevice. (See also xamlruntimegraphics.h.)
  • virtual __checkReturn XRESULT UIThreadPriority() = 0;
  • virtual __checkReturn XRESULT RenderThreadPriority() = 0;
  • virtual __checkReturn XRESULT RenderThreadQuantum() = 0;
  • virtual __checkReturn BOOL DisplayFrameRateMonitor() = 0;
This update introduces several registry values that let you do the following:
  • Manipulate the UI Thread Priority
  • Manipulate the Render Thread Priority
  • Manipulate the Render Thread Quantum
  • Display the frame rate monitor together with the two previously mentioned thread priority settings

    Frame rate monitor

Registry information

Registry location

HKEY_LOCAL_MACHINE\Software\Microsoft\XamlRenderOpenGL

Registry subkeys and possible values

NameTypeDescriptionDefault Value
UIThreadPriorityREG_DWORDSets the priority of UI thread (0-5)
  • PAL_THREAD_PRIORITY_LOW=5
  • PAL_THREAD_PRIORITY_LOWERED=4
  • PAL_THREAD_PRIORITY_NORMAL=3
  • PAL_THREAD_PRIORITY_ELEVATED=2
  • PAL_THREAD_PRIORITY_HIGH=1
  • PAL_THREAD_PRIORITY_REAL_TIME=0
3
RenderThreadPriorityREG_DWORDSets the priority of Render thread (0-5)
  • PAL_THREAD_PRIORITY_LOW=5
  • PAL_THREAD_PRIORITY_LOWERED=4
  • PAL_THREAD_PRIORITY_NORMAL=3
  • PAL_THREAD_PRIORITY_ELEVATED=2
  • PAL_THREAD_PRIORITY_HIGH=1
  • PAL_THREAD_PRIORITY_REAL_TIME=0
3
RenderThreadQuantumREG_DWORDSets the thread quantum level (in milliseconds) for the Render thread (0-5)
  • 0 – Maximum quantum time, thread runs until it is complete
  • 5 – High quantum time
  • 4 – Medium quantum time
  • 3 – Increased quantum time
  • 2 – Normal quantum time
  • 1 – Low Quantum time

Threads at the same quantum level run in a round-robin manner, with each thread receiving a quantum, or slice, of execution time.
2
DisplayFrameRateMonitorREG_DWORDSpecifies whether Display Frame rate monitor is enabled. Set this entry to 1 to enable monitor and to 0 (zero) to disable monitor. 0

To elevate the rate of the rendering thread for better performance, set the RenderThreadPriority value to 2.

↑ Back to the top


Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

↑ Back to the top


Keywords: kbfix, kbsurveynew, kbexpertiseadvanced, atdownload, kb

↑ Back to the top

Article Info
Article ID : 3001297
Revision : 1
Created on : 1/7/2017
Published on : 11/13/2014
Exists online : False
Views : 203