New features of DXGI 1.4

Source: Internet
Author: User

In fact, to write this article, DXGI has 1.5 version, but a lot of friends are actually still using 1.2 or even 1.1, so now talk about 1.4 is not at all, and 1.4 is a very important update, it is worth a careful talk.

In order to support Direct3D (Dxgi is still in the 1.4 version, Direct3D also named Direct3D 12, now Unified renamed DirectX), Dxgi added these new features:

    • More inexpensive Adapter enumeration mechanism
    • Video memory budget tracking
    • Direct3D 12Swapchain Improvements
    • Related Topics

More inexpensive Adapter enumeration mechanism

In Direct3D 12, it is not possible to reverse-track the creation of its Idxgiadapter adapter object from device. It is not possible to specify D3D_DRIVER_TYPE_WARP when calling D3d12createdevice. But you can use IDXFactory4 to deal with these things. Idxgifactory4::enumadapterbyluid can track the creation of device adapter (with Id3d12device::getadapterluid pairing) in a D3D 12 environment. If you want D3d12createdevice to use the warp renderer, use the adapter (Adapter) provided by the Idxgifactory4::enumwarpadapter.

Video memory budget tracking

Microsoft recommends that developers use the reserved memory system they designed to handle video memory, which tells the operating system the minimum amount of memory needed to reserve apps for developers. (This is a good mechanism, but there are some limitations.)

The amount of physical memory a system can provide for an application is called "Video memory Budget" for this application. The budget fluctuates dramatically when the background process wakes up or sleeps, and the budget changes drastically when the end user switches the process. The application is notified by the system at this time and the current consumption memory and budget are counted. If the application feels that the budget is not enough, it will hibernate and allow other apps to execute, and the created class function called at that time may return an error. IDXGIAdapter3 is concerned with this matter, especially Queryvideomemoryinfo and registervideomemorybudgetchangenotificationevent.

For more information see here: Residency.

Direct3D 12Swapchain Improvements

In order to reduce the overhead, in the d3d12, some d3d11 era of swapchain function is not recommended to use. In order to better correspond to the new concepts in d3d12 and to serve the new features, Microsoft has also made some other adjustments to the API

Constant Backbuffer Consistent

In D3d11, the app can only invoke GetBuffer (0,...) A. Each invocation of present implies a modification of the consistency of the return interface. Because of the CPU overhead requirements and the flexible resource descriptor design, D3D12 no longer supports this implicit resource consistency change. Then the application needs to call GetBuffer manually for the buffer created for each block and Swapchain. The app also has to manually render buffer in the queue after the present operation. Microsoft also encourages developers not to rebuild many objects every time they present, but rather to cache each buffer (cache).

Multi-Adapter Support

In a multi-GPU adapter environment, Backbuffer is created only from Node 1 and has only one command queue, which is a fairly important concept in DirectX, In particular, multi-line Cheng adapters in a multi-monitor environment) Resizebuffer allows applications to create backbuffer on other nodes, and also allows different command queues for each backbuffer. These features work with Swapchain to build alternate frame rendering (AFR) technology. More please see Direct3D multi-adapters.

Miscellaneous

    • The command queue is no longer passed to the D3D device object and must be passed to the Createswapchain method.
    • Only the following two flip mode swap effects are supported:

The dxgi_swap_effect_flip_discard identifier should be preferred if the application is fully rendered backbuffer or if you want to support multi-adapter scenarios more lightly

If you want to optimize the screen submission process or formally read from a previously committed backbuffer, you should use the dxgi_swapeffect_flip_sequential identifier

    • Setfullscreenstate is no longer repulsive to the display, so user-initialized operating system elements can be displayed seamlessly in front of the application output. For example, body setting (Volume Settings).

Related Topics

Direct3D Hardware Feature Levels
Programming Guide for DXGI

New features of DXGI 1.4

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.