Direct3D feature level 9_3 for Windows Phone 8

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Microsoft Direct3D 11 introduced the concept of feature levels. A feature level is a well-defined set of GPU functionality. On the desktop platform, which supports many different graphics devices, an app can use feature levels to make sure that the device on which the platform is running supports the graphics features used by the app. On Windows Phone 8, all devices have GPUs that support feature level 9_3. So on the phone, the feature level is not used for dynamically detecting device capabilities, but is instead used to describe the set of features that can be used in phone apps that use Direct3D. For more info on feature levels, see Direct3D feature levels.

Warning

If an app creates a Direct3D graphics device and requests a feature level higher than 9_3, the device will be successfully created on the emulator. However, when the app is run on the phone, it will not be able to create a Direct3D graphics device with a feature level higher than 9_3, so some code that requires higher feature level functionality could work on the emulator but not work on a physical device. Because of this, be sure to test your D3D-specific code using a Windows Phone 8 device. Optionally, when you create a new Direct3D project, modify Direct3DBase.cpp to remove all feature levels except 9_3 from the array of D3D_FEATURE_LEVEL values supplied in the pFeatureLevel parameter to the D3D11CreateDevice function. This will ensure that you always get a feature level 9_3 device, even when running on the emulator.

Features supported with feature level 9_3

The following table describes the feature support for feature level 9_3.

Feature

Support for feature level 9_3

Shader Model

2.0 (4_0_level_9_3) [vs_2_a/ps_2_b]

Geometry shader

No

Stream out

No

DirectCompute / Compute shader

N/A

Hull and domain shaders

No

Texture resource arrays

No

Cubemap resource arrays

No

BC4/BC5 compression

No

BC6H/BC7 compression

No

Alpha-to-coverage

No

Extended formats (e.g. BGRA)

Yes

10-bit XR high color format

N/A

Logic operations (output merger)

No

Target-independent rasterization

No

Multiple render target (MRT) with ForcedSampleCount1

No

UAV slots

N/A

UAVs at every stage

N/A

Max forced sample count for UAV-only rendering

N/A

Constant buffer offsetting and partial updates

Yes

16 bits per pixel (bpp) formats

Optional

Max texture dimension

4096

Max cubemap dimension

4096

Max volume extent

256

Max texture repeat

8192

Max anisotropy

16

Max primitive count

1048575

Max input slots

16

Simultaneous render targets

4

Occlusion queries

Yes

Separate alpha blend

Yes

Mirror once

Yes

Overlapping vertex elements

Yes

Independent write masks

Yes

Instancing

Yes

Nonpowers-of-2 textures

Feature level 9_3, the display device supports the use of 2-D textures with dimensions that are not powers of two under two conditions. First, only one MIP-map level for each texture can be created, and second, no wrap sampler modes for textures are allowed (that is, the AddressU, AddressV, and AddressW members of D3D11_SAMPLER_DESC cannot be set to D3D11_TEXTURE_ADDRESS_WRAP).