-
Notifications
You must be signed in to change notification settings - Fork 856
Feature support
Philip Rebohle edited this page Sep 11, 2022
·
15 revisions
DXVK supports D3D11 up to Feature Level 12_0.
DXVK supports the following optional features, provided that the Vulkan driver and GPU support the corresponding features:
- Tiled Resources: Up to Tier 3.
- Multisampled tiled resources are not supported on all Vulkan drivers.
- Sharing tiled resources or tile pools between multiple D3D devices is not supported.
- Shader feedback on raw or structured buffer loads may be inaccurate if a single load straddles 64k pages.
- Conservative Rasterization: Up to Tier 3.
- The corresponding Vulkan functionality is provided by
VK_EXT_conservative_rasterization
. - Some Vulkan drivers do not support
SV_InnerCoverage
and will be limited to Tier 2.
- The corresponding Vulkan functionality is provided by
- Exporting Viewport Index and Render Target Array Index from vertex shaders or domain shaders.
- This is expressed by the VPAndRTArrayIndexFromAnyShaderFeedingRasterizer feature in D3D11.
- The corresponding Vulkan features are
shaderOutputViewportIndex
andshaderOutputLayer
.
- Exporting the Stencil Reference from pixel shaders.
- This is expressed by the PSSpecifiedStencilRefSupported feature in D3D11.
- The corresponding Vulkan functionality is provided by
VK_EXT_shader_stencil_export
. - Not all hardware can support this.
- Double-precision shader instructions
- This is expressed by the DoublePrecisionFloatShaderOps and ExtendedDoublesShaderInstructions features in D3D11.
The following core API features are unsupported:
- Class linkage. Compiling shaders that rely on this feature will fail.
-
Predication. Calls to SetPredication are ignored.
- Support for predicated draws and dispatches may be implemented in the future, other operations will remain unsupported.
- Prefer using indirect draws or dispatches instead.
-
Target-independent rasterization: In case a render target is bound, the ForcedSampleCount parameter of the current rasterizer state gets ignored.
- ForcedSampleCount is supported when performing UAV rendering, i.e. rendering without any bound render targets.
- Most Vulkan drivers do not support 16x MSAA.
-
Video APIs. These are generally not supported.
- There is rudimentary support for
ID3D11VideoContext::VideoProcessorBlt
, and related functionality required for setup.
- There is rudimentary support for
The following optional features are unsupported:
-
Rasterizer Ordered Views.
- There is no corresponding Vulkan feature with good driver support.
-
Minimum precision.
- Shader instruction hits to use relaxed precision for certain instructions are ignored. Since DXBC does not natively support 16-bit types, this cannot be supported without a more elaborate compiler infrastructure.
The code that determines D3D11 feature support can be found here.
Shared Resources are partially supported, with the following restrictions:
- Proton patches are required.
- Not all formats that are guaranteed to be shareable by D3D11 are supported by all drivers.
-
IDXGIKeyedMutex
is unsupported due to extremely poor documentation. - This does not and will never work at all on Windows.
If at all possible, please avoid sharing resources between different APIs, or different devices of the same API.