![]() The D3D12 API is designed to be a lower level API than the existing D3D11 like APIs, giving more control to the host regarding some aspects like final bitstream header coding, frame reference management and exposing more complex synchronization mechanisms and explicit memory management.Īfter building this API, we will be building an optional separate helper layer placed on top of this API interface that will have responsabilities such as, but not limited to: 2.3 Responsabilities separation between D3D12 API and Helper layer Some of the unions today only contain pointers to enum types, but to be consistent with this, they were also referenced as pointers in the case a new codec requires some more complex type than an enum to represent those concepts. This decision also prevents structures holding members of (or containing anonymous) union types of changing their type sizes when extending the interface. The union types will always have a constant size based on the pointer size of the host architecture. The rationale behind this design decision is to preserve the binary interface compatibility on extensibility. Note: The union types always contain pointers to the codec-specific structures. A common example is adding support for tiles, which can be combined with (If applicable) Extending the API to add new subregion partition modes following the same pattern exposed in this API for slice based subregion partitioning. Creating the codec specific picture control structures and adding it to the respective union types.Ĥ. Creating the codec specific support flags and configuration structures and adding it to the respective union types.ģ. Extending the codecs enum with the new codec.Ģ. When a new codec wants to be supported, the extension process should consist of:ġ. The codec-specific aspects of the API will be delegated to codec-specific structures and their access to union types. The main supported codecs will be H264 and HEVC but with open extensibility for new codecs such as AV1. This API enables game streaming scenarios that require a highly performant low level API. This API enables efficient interop between D3D12 Video Encode and D3D12 Graphics, Compute and Machine learning scenarios, which is interesting for scenarios such as running machine learning inference over a camera stream. 2.1.3 D3D Graphics, Compute and Machine learning interop with Video Encode API DPB heuristics such as adaptive GOP) in the media layer that can be reused across different hardware platforms. This shift of responsabilities to the layer sitting above this API also allows to have a consistent set of encoding policies (eg. Given the low level design of the API, these higher level media layers can optimize for their scenarios by having fine grain control of synchronization and memory allocation/residency aspects of the Video encode session such as full control of the reference picture management and bitstream headers writing responsabilities. This allows higher level Media APIs (such as Media Foundation) to build their media layers on top of this API which takes care of abstracting the different hardware platforms. This API provides access to video encoding capabilities in a low level and portable way across all hardware vendors. Video encoding acceleration will be now available in this scenarios without the need for using platform specific solutions. This includes the various OneCore SKUs used by cloud compute and IoT platforms. The D3D12 Video API will enable portable hardware accelerated video encoding on newer platforms where only D3D12 is available. This new D3D12 API will provide a consistent and unified interface to expose the low level hardware acceleration capabilities that can be used to write video encoding applications. This way, applications can make use of video encoding capabilities via MediaFoundation. HW specific MediaFoundation transforms are provided by the IHVs, and they know which extensions to use so to communicate with the drivers. Video encoding on D3D11 is done via an extension mechanism, passing-through parameters to the D3D11 drivers. General considerations 2.0 Video Encoding on D3D11 This spec covers video encoding, although image encoding also needs exposure in D3D12. This API provides access to the video encode hardware acceleration capabilities for different scenarios such as IoT, Cloud, Media APIs, machine learning and game streaming.Ī helper layer will be developed on top of this API interface to provide a higher level entry point for users that need a higher level interface. This feature adds a video encoding mechanism to D3D12, providing a coherent set of encoding APIs that are consistent with the D3D12 framework, and allows optimal usage of hardware encoding with D3D12 in a low-level fashion.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |