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.
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.
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.
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.
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.
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 name |
File size |
Date |
Time |
Path |
---|---|---|---|---|
Xamlruntimegraphics.h |
15,982 |
17-Sep-2014 |
09:06 |
Public\Common\Oak\Inc |
Ddrawdevice.hpp |
6,785 |
17-Sep-2014 |
09:06 |
Public\Common\Oak\Xamlrenderplugin\Ddraw |
Opengldevice.cpp |
66,076 |
17-Sep-2014 |
09:06 |
Public\Common\Oak\Xamlrenderplugin\Opengl |
Opengldevice.hpp |
9,724 |
17-Sep-2014 |
09:06 |
Public\Common\Oak\Xamlrenderplugin\Opengl |
Xrrendererddraw.lib |
2,404 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\X86\Retail |
Xrrendererddraw.exp |
1,138 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\X86\Retail |
Xrrendereropengl.lib |
2,404 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\X86\Retail |
Xrrendereropengl.exp |
1,140 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\X86\Retail |
Xrrendererddraw.lib |
2,404 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Lib\X86\Debug |
Xrrendererddraw.exp |
1,134 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Lib\X86\Debug |
Xrrendereropengl.lib |
2,404 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Lib\X86\Debug |
Xrrendereropengl.exp |
1,140 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Lib\X86\Debug |
Xrrendererddraw.lib |
2,404 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\X86\Checked |
Xrrendererddraw.exp |
1,138 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\X86\Checked |
Xrrendereropengl.lib |
2,404 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\X86\Checked |
Xrrendereropengl.exp |
1,140 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\X86\Checked |
Xrrendererddraw.lib |
2,388 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Lib\Armv7\Retail |
Xrrendererddraw.exp |
1,131 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Lib\Armv7\Retail |
Xrrendereropengl.lib |
2,388 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Lib\Armv7\Retail |
Xrrendereropengl.exp |
1,137 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Lib\Armv7\Retail |
Xrrendererddraw.lib |
2,388 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\Armv7\Debug |
Xrrendererddraw.exp |
1,131 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\Armv7\Debug |
Xrrendereropengl.lib |
2,388 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\Armv7\Debug |
Xrrendereropengl.exp |
1,137 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Lib\Armv7\Debug |
Xrrendererddraw.lib |
2,388 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Lib\Armv7\Checked |
Xrrendererddraw.exp |
1,135 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Lib\Armv7\Checked |
Xrrendereropengl.lib |
2,388 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Lib\Armv7\Checked |
Xrrendereropengl.exp |
1,137 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Lib\Armv7\Checked |
Interactivity.dll |
102,400 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Retail |
Interactivity.map |
261,175 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Retail |
Interactivity.rel |
44,099 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Retail |
Xamlruntime.dll |
802,816 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Retail |
Xamlruntime.map |
1,373,394 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Retail |
Xamlruntime.rel |
1,679,177 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Retail |
Xamlruntimecore.dll |
2,879,488 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Retail |
Xamlruntimecore.map |
1,811,157 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Retail |
Xamlruntimecore.rel |
1,844,187 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Retail |
Xrrendererddraw.dll |
24,576 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\X86\Retail |
Xrrendererddraw.map |
28,969 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\X86\Retail |
Xrrendererddraw.rel |
6,080 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\X86\Retail |
Xrrendereropengl.dll |
32,768 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\X86\Retail |
Xrrendereropengl.map |
51,394 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\X86\Retail |
Xrrendereropengl.rel |
15,157 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\X86\Retail |
Interactivity.dll |
253,952 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\X86\Debug |
Interactivity.map |
580,631 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\X86\Debug |
Interactivity.rel |
172,424 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\X86\Debug |
Xamlruntime.dll |
1,687,552 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\X86\Debug |
Xamlruntime.map |
2,584,434 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\X86\Debug |
Xamlruntime.rel |
2,339,246 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\X86\Debug |
Xamlruntimecore.dll |
7,512,064 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\X86\Debug |
Xamlruntimecore.map |
5,373,336 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\X86\Debug |
Xamlruntimecore.rel |
4,079,246 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\X86\Debug |
Xrrendererddraw.dll |
45,056 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\X86\Debug |
Xrrendererddraw.map |
49,051 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\X86\Debug |
Xrrendererddraw.rel |
14,606 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\X86\Debug |
Xrrendereropengl.dll |
151,552 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\X86\Debug |
Xrrendereropengl.map |
275,814 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\X86\Debug |
Xrrendereropengl.rel |
196,668 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\X86\Debug |
Interactivity.dll |
139,264 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Checked |
Interactivity.map |
503,292 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Checked |
Interactivity.rel |
61,760 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Checked |
Xamlruntime.dll |
1,167,360 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Checked |
Xamlruntime.map |
2,416,327 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Checked |
Xamlruntime.rel |
2,126,763 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Checked |
Xamlruntimecore.dll |
6,316,032 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Checked |
Xamlruntimecore.map |
5,330,367 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Checked |
Xamlruntimecore.rel |
5,787,607 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\X86\Checked |
Xrrendererddraw.dll |
32,768 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\X86\Checked |
Xrrendererddraw.map |
48,894 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\X86\Checked |
Xrrendererddraw.rel |
13,417 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\X86\Checked |
Xrrendereropengl.dll |
77,824 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\X86\Checked |
Xrrendereropengl.map |
167,643 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\X86\Checked |
Xrrendereropengl.rel |
42,098 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\X86\Checked |
Interactivity.dll |
98,304 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Retail |
Interactivity.map |
446,025 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Retail |
Interactivity.rel |
41,866 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Retail |
Xamlruntime.dll |
765,952 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Retail |
Xamlruntime.map |
2,421,084 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Retail |
Xamlruntime.rel |
1,443,958 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Retail |
Xamlruntimecore.dll |
2,789,376 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Retail |
Xamlruntimecore.map |
3,970,707 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Retail |
Xamlruntimecore.rel |
1,638,838 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Retail |
Xrrendererddraw.dll |
28,672 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Retail |
Xrrendererddraw.map |
45,798 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Retail |
Xrrendererddraw.rel |
4,833 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Retail |
Xrrendereropengl.dll |
36,864 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Retail |
Xrrendereropengl.map |
81,279 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Retail |
Xrrendereropengl.rel |
8,922 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Retail |
Interactivity.dll |
233,472 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Debug |
Interactivity.map |
1,928,325 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Debug |
Interactivity.rel |
94,675 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Debug |
Xamlruntime.dll |
1,773,568 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\Armv7\Debug |
Xamlruntime.map |
9,783,361 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Debug |
Xamlruntime.rel |
2,121,688 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\Armv7\Debug |
Xamlruntimecore.dll |
7,467,008 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\Armv7\Debug |
Xamlruntimecore.map |
20,735,843 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\Armv7\Debug |
Xamlruntimecore.rel |
2,572,870 |
30-Sep-2014 |
15:14 |
Public\Common\Oak\Target\Armv7\Debug |
Xrrendererddraw.dll |
49,152 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\Armv7\Debug |
Xrrendererddraw.map |
99,572 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\Armv7\Debug |
Xrrendererddraw.rel |
11,068 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\Armv7\Debug |
Xrrendereropengl.dll |
131,072 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\Armv7\Debug |
Xrrendereropengl.map |
590,681 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\Armv7\Debug |
Xrrendereropengl.rel |
67,995 |
30-Sep-2014 |
15:17 |
Public\Common\Oak\Target\Armv7\Debug |
Interactivity.dll |
163,840 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\Armv7\Checked |
Interactivity.map |
1,156,971 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\Armv7\Checked |
Interactivity.rel |
87,947 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\Armv7\Checked |
Xamlruntime.dll |
1,228,800 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\Armv7\Checked |
Xamlruntime.map |
5,666,819 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\Armv7\Checked |
Xamlruntime.rel |
2,125,806 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\Armv7\Checked |
Xamlruntimecore.dll |
6,107,136 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Checked |
Xamlruntimecore.map |
14,902,705 |
30-Sep-2014 |
15:16 |
Public\Common\Oak\Target\Armv7\Checked |
Xamlruntimecore.rel |
2,826,562 |
30-Sep-2014 |
15:15 |
Public\Common\Oak\Target\Armv7\Checked |
Xrrendererddraw.dll |
36,864 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Checked |
Xrrendererddraw.map |
78,266 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Checked |
Xrrendererddraw.rel |
10,778 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Checked |
Xrrendereropengl.dll |
81,920 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Checked |
Xrrendereropengl.map |
235,543 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Checked |
Xrrendereropengl.rel |
25,220 |
30-Sep-2014 |
15:18 |
Public\Common\Oak\Target\Armv7\Checked |
Interactivity.dll |
178,864 |
30-Sep-2014 |
12:56 |
Public\Common\Oak\Bin\I386 |
Xamlruntimecore_dt.dll |
2,415,280 |
30-Sep-2014 |
12:56 |
Public\Common\Oak\Bin\I386 |
Xamlruntime_dt.dll |
1,133,232 |
30-Sep-2014 |
12:56 |
Public\Common\Oak\Bin\I386 |
Xrpack.exe |
281,264 |
30-Sep-2014 |
12:56 |
Public\Common\Oak\Bin\I386 |
Xamlruntime.exp |
1,887 |
30-Sep-2014 |
15:15 |
Public\Common\Sdk\Lib\X86\Retail |
Xamlruntime.lib |
3,664 |
30-Sep-2014 |
15:15 |
Public\Common\Sdk\Lib\X86\Retail |
Xamlruntime.exp |
1,886 |
30-Sep-2014 |
15:14 |
Public\Common\Sdk\Lib\X86\Debug |
Xamlruntime.lib |
3,664 |
30-Sep-2014 |
15:14 |
Public\Common\Sdk\Lib\X86\Debug |
Xamlruntime.exp |
1,888 |
30-Sep-2014 |
15:15 |
Public\Common\Sdk\Lib\X86\Checked |
Xamlruntime.lib |
3,664 |
30-Sep-2014 |
15:15 |
Public\Common\Sdk\Lib\X86\Checked |
Xamlruntime.exp |
1,885 |
30-Sep-2014 |
15:15 |
Public\Common\Sdk\Lib\Armv7\Retail |
Xamlruntime.lib |
3,642 |
30-Sep-2014 |
15:15 |
Public\Common\Sdk\Lib\Armv7\Retail |
Xamlruntime.exp |
1,880 |
30-Sep-2014 |
15:14 |
Public\Common\Sdk\Lib\Armv7\Debug |
Xamlruntime.lib |
3,642 |
30-Sep-2014 |
15:14 |
Public\Common\Sdk\Lib\Armv7\Debug |
Xamlruntime.exp |
1,886 |
30-Sep-2014 |
15:15 |
Public\Common\Sdk\Lib\Armv7\Checked |
Xamlruntime.lib |
3,642 |
30-Sep-2014 |
15:15 |
Public\Common\Sdk\Lib\Armv7\Checked |
Xamlruntime_dt.dll |
1,133,232 |
30-Sep-2014 |
12:56 |
Program files\Microsoft visual studio 11.0\Vc\Vcwizards\Windowsembeddedxamltools |
Xamlruntimecore_dt.dll |
2,415,280 |
30-Sep-2014 |
12:56 |
Program files\Microsoft visual studio 11.0\Vc\Vcwizards\Windowsembeddedxamltools |
Xrpack.exe |
281,264 |
30-Sep-2014 |
12:56 |
Program files\Microsoft visual studio 11.0\Vc\Vcwizards\Windowsembeddedxamltools |
Interactivity.dll |
178,864 |
30-Sep-2014 |
12:56 |
Program files\Microsoft visual studio 11.0\Vc\Vcwizards\Windowsembeddedxamltools |
Workaround informationInstantiating 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
Registry information
Registry location
HKEY_LOCAL_MACHINE\Software\Microsoft\XamlRenderOpenGL
Registry subkeys and possible values
Name |
Type |
Description |
Default Value |
UIThreadPriority |
REG_DWORD |
Sets the priority of UI thread (0-5)
|
3 |
RenderThreadPriority |
REG_DWORD |
Sets the priority of Render thread (0-5)
|
3 |
RenderThreadQuantum |
REG_DWORD |
Sets the thread quantum level (in milliseconds) for the Render thread (0-5)
|
2 |
DisplayFrameRateMonitor |
REG_DWORD |
Specifies 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.
Status
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
References
For information about BSP environment variables, see BSP environment variables (Windows Embedded Compact 2013).
Learn about the standard terminology that is used to describe Microsoft software updates.