Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Direct3D
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Feature levels== {{Main article|Feature levels in Direct3D}} {{Anchor|Direct3D 9.3}} In Direct3D 5 to 9, when new versions of the API introduced support for new hardware capabilities, most of them were optional β each graphics vendor maintained their own set of supported features in addition to the basic required functionality. Support for individual features had to be determined using "capability bits" or "caps", making cross-vendor graphics programming a complex task. Direct3D 10 introduced a much simplified set of mandatory hardware requirements based on most popular Direct3D 9 capabilities which all supporting graphics cards had to adhere to, with only a few optional capabilities for supported texture formats and operations. Direct3D 10.1 added a few new mandatory hardware requirements, and to remain compatible with 10.0 hardware and drivers, these features were encapsulated in two sets called "feature levels", with 10.1 level forming a superset of 10.0 level. As Direct3D 11.0, 11.1 and 12 added support for new hardware, new mandatory capabilities were further grouped in upper feature levels.<ref name=D3DFeatureLevels_chuckw/> Direct3D 11 also introduced "10level9", a subset of the Direct3D 10 API with three feature levels encapsulating various Direct3D 9 cards with [[WDDM]] [[Device Driver Interface|drivers]], and Direct3D 11.1 re-introduced a few optional features for all levels,<ref name="CheckFeatureSupport">{{Cite web|url=https://msdn.microsoft.com/en-us/library/windows/desktop/hh404562#check_support_of_new_direct3d_11.1_features_and_formats|title = Direct3D 11.1 Features - Win32 apps| date=August 19, 2020 }}</ref> which were expanded in Direct3D 11.2 and later versions. This approach allows developers to unify the rendering pipeline and use a single version of the API on both newer and older hardware, taking advantage of performance and usability improvements in the newer runtime.<ref name="gamefest2008"/> New feature levels are introduced with updated versions of the API and typically encapsulate: * major mandatory features β (Direct3D 11.0, 12), * a few minor features (Direct3D 10.1, 11.1), or * a common set of previously optional features (Direct3D 11.0 "10 level 9"). Each upper level is a strict superset of a lower level, with only a few new or previously optional features that move to the core functionality on an upper level.<ref name="FeatureLevels"/> More advanced features in a major revision of the Direct3D API such as new shader models and rendering stages are only exposed on up-level hardware.<ref name="D3D11_downlevel"/><ref name="D3D11DDI"/> Separate capabilities exist to indicate support for specific texture operations and resource formats; these are specified per each texture format using a combination of capability flags.<ref name="format_support">{{cite web|url=https://msdn.microsoft.com/en-us/library/windows/desktop/ff476134 |title=D3D11_FORMAT_SUPPORT enumeration |access-date=2015-06-16 |publisher=MSDN}}</ref><ref name="format_support2">{{cite web|url=https://msdn.microsoft.com/en-us/library/windows/desktop/ff476135 |title=D3D11_FORMAT_SUPPORT2 enumeration |access-date=2015-06-16 |publisher=MSDN}}</ref> Feature levels use underscore as a delimiter (i.e. "12_1"), while API/runtime versions use dot (i.e. "Direct3D 11.4"). ===Direct3D 11 levels=== In Direct3D 11.4 for Windows 10, there are nine feature levels provided by {{code|D3D_FEATURE_LEVEL}} structure; levels 9_1, 9_2 and 9_3 (collectively known as '''Direct3D 10 Level 9''') re-encapsulate various features of popular Direct3D 9 cards, levels 10_0, 10_1 refer to respective legacy versions of Direct3D 10,<ref name="D3D11_downlevel"/> 11_0 and 11_1 reflects the feature introduced with Direct3D 11 and Direct3D 11.1 APIs and runtimes, while levels 12_0 and 12_1 correspond the new feature levels introduced with the Direct3D 12 API. {| class="wikitable" style="font-size: 90%" |+ Feature levels in Direct3D 11.4 |- ! Feature level !! Mandatory hardware features !! Optional features |- | '''9_1''' |Shader Model 2.0 ({{code|vs_2_0}}/{{code|ps_2_0}}), 2K textures, volume textures, event queries, BC1-3 (a.k.a. DXTn), a few other specific capabilities. | rowspan="3" {{N/A}} |- | '''9_2''' | Occlusion queries, floating-point formats (no blending), extended caps, all 9_1 features. |- | '''9_3''' | {{code|vs_2_a}}/{{code|ps_2_x}} with instancing and additional shader caps, 4K textures, multiple render targets (4 MRTs), floating-point blending (limited), all 9_2 features. |- | '''10_0''' | Shader Model 4.0, geometry shader, stream out, alpha-to-coverage, 8K textures, MSAA textures, 2-sided stencil, general render target views, texture arrays, BC4/BC5, full floating-point format support, all 9_3 features. | rowspan="2"| Logical blend operations, DirectCompute (CS 4.0/4.1), extended pixel formats.<ref name="CheckFeatureSupport"/><br /> |- | '''10_1''' | Shader Model 4.1, cubemap arrays, extended MSAA, all 10_0 features. |- | '''11_0''' | Shader Model 5.0/5.1, hull & domain shaders, DirectCompute (CS 5.0/5.1), 16K textures, BC6H/BC7, extended pixel formats, all 10_1 features. |style="border-bottom-style:hidden"| UAV only rendering with force sample count, constant buffer offsetting and partial updates, double precision (64-bit) floating point operations, minimum floating-point precision (10- or [[16-bit computing|16-bit]]), min/max filtering. |- | '''11_1''' | Logical blend operations, target-independent rasterization, UAVs at every pipeline stage with increased slot count, UAV only rendering with force sample count, constant buffer offsetting and partial updates, all 11_0 features. |rowspan=3 style="border-top-style:hidden"| Tiled resources (four tiers), conservative rasterization (three tiers), stencil reference value from Pixel Shader, rasterizer ordered views, typed UAV loads for additional formats. |- | '''12_0''' | Tiled Resources Tier 2 (Texture2D), Typed UAV Loads (additional formats). |- | '''12_1''' | Conservative Rasterization Tier 1, Rasterizer Ordered Views. |} ===Direct3D 12 levels=== Direct3D 12 for Windows 10 requires graphics hardware conforming to feature levels 11_0 and 11_1 which support virtual memory address translations and requires WDDM 2.0 drivers. There are two new feature levels, 12_0 and 12_1, which include some new features exposed by Direct3D 12 that are optional on levels 11_0 and 11_1.<ref>{{Cite web|url=https://learn.microsoft.com/en-us/windows/win32/direct3d12/hardware-support|title=Hardware Tiers - Win32 apps|website=learn.microsoft.com|date=December 30, 2021 |accessdate=December 21, 2022}}</ref> Some previously optional features are realigned as baseline on levels 11_0 and 11_1. Shader Model 6.0 has been released with Windows 10 Creators Update and requires Windows 10 Anniversary Update, WDDM 2.1 drivers. {| class="wikitable" style="font-size: 90%" |+ Direct3D 12 feature levels |- ! Level !!style="width:50%;"|Mandatory features !! Optional features |- | rowspan="2"|'''11_0''' | All mandatory 11_0 features from Direct3D 11, Shader Model 5.1, Resource binding Tier 1. | rowspan="6"| Logical blend operations, double precision (64-bit) floating point operations, minimum floating point precision (10- or 16-bit). Resource binding (three tiers), tiled resources (four tiers), conservative rasterization (three tiers), stencil reference value from Pixel Shader, rasterizer ordered views, typed UAV loads for additional formats, view instancing. Shader Model 6.0β6.7 Metacommands, variable shading rate, raytracing, mesh shaders, sampler feedback. Other optional features.<ref>{{Cite web|url=https://docs.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_feature|title = D3D12_FEATURE - Win32 apps| date=February 14, 2023 }}</ref> |- |style="border-bottom-style:hidden"| UAVs at every pipeline stage, UAV only rendering with force sample count, constant buffer offsetting and partial updates. |- | '''11_1''' | style="border-top-style:hidden"| Logical blend operations, target-independent rasterization, increased UAV slot count. |- | '''12_0''' | Resource Binding Tier 2, Tiled Resources Tier 2 (Texture2D), Typed UAV Loads (additional formats), Shader Model 6.0. |- | '''12_1''' | Conservative Rasterization Tier 1, Rasterizer Ordered Views. |- | '''12_2''' | ''DirectX 12 Ultimate'': Shader Model 6.5, Raytracing Tier 1.1, Mesh Shaders, Variable-Rate Shading, Sampler Feedback, Resource Binding Tier 3, Tiled Resources Tier 3 (Texture3D), Conservative Rasterization Tier 3, 40-bit virtual address space. |} Direct3D 12 introduces a revamped resource binding model which allows explicit control of memory. Abstract "resource view" objects<ref>{{Cite web|url=https://msdn.microsoft.com/en-us/library/windows/desktop/ff476900(v=vs.85).aspx|title = Introduction to a Resource in Direct3D 11 - Win32 apps| date=October 6, 2021 }}</ref> are now represented with resource descriptors, which are allocated using memory heaps and tables.<ref name="engel">{{cite web |url=https://software.intel.com/en-us/articles/introduction-to-resource-binding-in-microsoft-directx-12 |author=[[Wolfgang Engel]] |title=Introduction to Resource Binding in Microsoft DirectX 12}}</ref> Resource Binding tiers define maximum number of resources that can be addressed using CBV (constant buffer view), SRV (shader resource view) and UAV (unordered access view), as well as texture sampler units. Tier 3 hardware allows fully bindless resources only restricted by the size of the descriptor heap, while Tier 1 and Tier 2 hardware impose some limits on the number of descriptors ("views") that can be used simultaneously.<ref>[https://intel.lanyonevents.com/sf14/connect/sessionDetail.ww?SESSION_ID=1315 GVCS005 - Microsoft Direct3D 12: New API Details and Intel Optimizations] {{webarchive |url=https://web.archive.org/web/20150404102336/https://intel.lanyonevents.com/sf14/connect/sessionDetail.ww?SESSION_ID=1315 |date=April 4, 2015 }}</ref><ref name= "Build2015_McMullen">{{Cite web|url=https://learn.microsoft.com/en-us/shows/|title=Shows|website=learn.microsoft.com|accessdate=December 21, 2022}}</ref> {| class="wikitable" style="font-size: 90%" |+ Resource binding tiers |- ! Resource limits !! Tier 1 !! Tier 2 !! Tier 3 |- | Descriptors in CBV/SRV/UAV heap ||1M||1M||'''>1M''' |- | CBVs per shader stage||14||14||'''full heap''' |- | SRVs per shader stage||128||colspan="2"| '''full heap''' |- | UAVs across all stages||8, 64<sup>β </sup> ||64||'''full heap''' |- | Samplers per shader stage||16||colspan="2"| '''full heap''' |- |colspan=4|<sup>β </sup> 64 slots on feature level 11_1 hardware |}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)