Ultrabook Feature Compatibility Matrix for Windows 8 Development

Architecture Support for Windows 8 Application Modes

There are many new features available to Ultrabooks running Windows 8 (specifically those having 3rd Generation Intel Core Technology.) Within the Windows 8 developer framework, there are two new modes of operation for apps. Developers will be able to target their apps to run on the Windows 8 Desktop or they can write Windows Store apps (this is the UI environment.) While there aren’t a lot of changes for developers writing desktop apps, the Windows Store app development environment brings on new requirements. In the following paragraphs we will explore what it means to develop apps that support these Ultrabook features for both platforms (Desktop and UI) using some of the more popular, existing tools and developer environments.

Developers should be aware that feature availability may differ according to development language or mode of Windows 8.

Figure 1. High Level Development Environments allowed for Windows 8 apps

The development environments shown in Figure 1 are those communicated on the Microsoft Developer’s Network. Apps targeting the Windows*8 UI are now being referred to as Windows Store apps. It is important to note that in order to write a Windows Store app, the only development environment allowed is MS VS 2012, with project templates. Writing apps for the Desktop is much less restrictive, currently. Developers may wish to port their current apps over to the Windows 8 environment. In doing so the developer will need to do some basic research on the tools they are currently using and the features they wish to expose in their apps. For example, Unity, a gaming engine that is very popular amongst app developers has not been updated to include all features available in Windows 8.

Taking this further, Figure 1 implies that there is a bold line between WinRT/Desktop.  It should be noted that some WinRT APIs can be used with desktop apps. Here they are:

  • Windows.Sensors (Accelerometer, Gyrometer, Ambient Light Sensor, OrientationSensor...)
  • Windows.Networking.Proximity.ProximityDevice (NFC)
  • Windows.Device.Geolocation (GPS)
  • Windows.UI.Notifications.ToastNotification
  • Windows.Globalization
  • Windows.Security.Authentication.OnlineId (including LiveID integration)
  • Windows.Security.CryptographicBuffer (usefull binary encoding/decoding functions)
  • Windows.ApplicationModel.DataTransfer.Clipboard (access and monitor Windows 8* Clipboard)

For more information about how to use WinRT APIs in desktop apps, take a look at Xavier Hallade's blog.

The following matrix will help developers understand what features are available for the most common languages and modes of development. Where possible, links are provided to supply more information for the intended feature.


Table 1. Ultrabook Features Matrix for Windows 8 Developer Environments
*Tables updated as of 10/12/2012, expect updates and changes over time

Windows 8 Desktop Mode Apps

Windows Store Apps

Feature/Toolset

C++

C#/VB

JavaScript/ HTML5

Unity

C++, C#, VB & XAML
Javascript/HTML5

Unity

WiDi

Yes

Yes

YES (Browser Plugins)

No

No

No

Touch Gestures

Yes

Yes

Yes

Yes

Yes

Yes

Orientation Sensors
(accelerometer,
inclinometer, gyrometer)

Yes

Yes

Yes

No
(soon)

Yes

Yes

Light Sensor

Yes

Yes

Yes

No
(soon)

Yes

Yes

OpenGL
(WebGL)

Yes

Yes

Yes
(WebGL)

Yes

No

No

DirectX

Yes

Yes

Yes

Yes

Yes

Yes

Intel Smart Connect

Yes

Yes

Yes

Yes

Yes

No

NFC

Yes

Yes

Yes

Yes

GPS

YES

YES

YES

Yes

AppUp Store

Yes

Yes

Yes

Yes

No

No

Windows 8 Store

No

No

No

No

Yes

Yes


Building Windows Store apps brings the most changes for software developers. This is a whole new interface for developers and so care needs to be taken to ensure that the planned use of tools is supported for this environment. Table 2 provides further detail on what are the requirements for developing Windows Store apps. Developers will want to visit the Microsoft Dev Center for Getting Started.

Note that there are not developer specific APIs for Intel Smart Connect Technology (ISCT). In order to take advantage of ISCT, it needs to be enabled in the BIOS (this should be the default) and should be configured in the OEM-provided User Interface. The link above provides examples of what applications are best suited for ISCT and more specifics on how an application would make use of it.

Table 2. Options for building Windows Store apps

Language Support Getting Started Advantages/Comments
JavaScript and HTML Build apps using JavaScript Takes advantage of powerful advancements in standards-based web technology. Native Windows apps can be built with HTML markup, JavaScript, and CSS3. Visual Studio Express 2012 for Windows 8 also provides access to a library of application templates to streamline and accelerate app development.
C# or Visual Basic and XAML Build apps using C# and VB WinRT APIs are available in all supported languages, including JavaScript, C++, C#, and Visual Basic. WinRT APIs are accessible to other Microsoft programming frameworks, like the .NET Framework or Windows C Runtime Library. Traditional Windows desktop apps can also access a subset of the new Windows Runtime functionality, in addition to the proven Win32 and .NET APIs.
C++ and XAML Build apps using C++ The new Windows 8 controls have been fully implemented in XAML. Native C++ developers can take advantage of XAML to build highly interactive UIs.
C++ and DirectX Build aps using DirectX Provides greater flexibility and greater access to system resources, especially graphic devices.



More information for developing apps for Windows 8 can be found in the Windows 8 Product Guide for Developers. You can also download Windows 8 App Store Sample Code available for C++, C#, JavaScript, and VB.Net to help you get started. Let’s dive deeper and look further into compatibility among some of the more common developer tools/interfaces.

Windows 8 Store Apps Considerations:

  • Win 32 APIs: Most Win 32 APIs are not exposed to Windows 8 UI and many existing tools/libs have dependencies
  • WinRT APIs: New API is not comprehended by existing PC apps and Intel Tools
  • Graphics and Media: Supports only a subset of Technologies (DX11.1, HMFT and DXVA)
  • Application Model: New threading model is not comprehended by Intel Tools
  • Windows 8 App Store: Cert prevents Windows 8 UI apps from accessing APIs/libs across barrier.
  • Windows Store app development is supported only on Windows 8. (No support for Windows 7 or Windows Server 2012.)

Table 3. Common Developer Tool Compatibility Matrix

Windows 8 Desktop Mode Apps

Windows Store apps

Programmable GFX- OpenGL Yes No
Programmable GFX - OpenCL Yes No
Programmable GFX-OCL, CM Yes No

DirectX
Utilize Win32 DX11 Gfx support exposed in Win8 UI
Utilize Win32 DX11 Gfx support (Games and Media)
Microsoft Compilers Full Win 32 Support Full WinRT support:
XAML/C++, XAML/VB+C#, HTML/JavaScript.
Amplifier Full Tool Functionality support Partial Feature Support in WinRT apps.
No thread model support.
No Hotspot/Locks/Concurrent analysis for WinRT apps
WinRT API support WIP
Graphics Performance Analyzer (GPA) Full Tool Functionality Except: IE10, WinRT app analysis and DX10 in Frame Analyzer
(with 15.28 driver + new OpenCL SDK)

No
(WinRT does not support Instrumentation)

MS xPerf/xRay Full Tool Functionality Full system wide support with some limitations
(ETW data collection command line only.
Viewer Desktop UI only)
Performance Bottleneck Analyzer (PBA aka xIF)
Works. Supports Desktop app analysis. Viewer works in Desktop. Partial Feature Set works with WinRT.
(Not available: Thread Models, WinRT data, JIT support)
Dev Environments (VS, Eclypse) Yes Partial
HTML 5 HW Acceleration YES YES
Direct X11.1 Support YES (with C++) YES
In-App Purchase No YES (customer must have purchased full version of app.)

Resources

Relevant Intel Blogs

Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione