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


Consider the following scenario:
  • You have a Microsoft Silverlight for Windows Embedded application on a Windows Embedded Compact 7-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:

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


This problem 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.


To resolve this issue, install the update that is described in this section. The update enables you to throttle the UI thread frame rate for the Silverlight for Windows Embedded application. For more information about this update, see the More Information section.

Software update information

A supported software update is now available from Microsoft as Windows Embedded Compact 7 Monthly Update April 2013. In the "File information" section, the package file name contains the processor type.

Note This Windows Embedded Compact 7 monthly update is available for download from the following Microsoft Download Center website:


This update is supported only if all previously issued updates for this product have also been installed.

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 update package
Files that are included in this update package

More Information

Instantiating a new XAML class that inherits ICustomGraphicsDevice may result in 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 enable you to 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


Registry subkeys and possible values

NameTypeDescriptionDefault Value
UIThreadPriorityREG_DWORDSets the priority of UI thread (0-5)
RenderThreadPriorityREG_DWORDSets the priority of Render thread (0-5)
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.
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.


For information about BSP environment variables, see BSP Environment Variables (Windows Embedded Compact 7).

For information about software update terminology, see Description of the standard terminology that is used to describe Microsoft software updates .

Article ID: 2803113 - Last Review: Jul 11, 2013 - Revision: 1

Windows Embedded Compact 7