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] |
No |
|
No |
|
N/A |
|
No |
|
No |
|
No |
|
No |
|
No |
|
No |
|
Yes |
|
N/A |
|
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). |