Jump to content
  • Advertisement
Sign in to follow this  

Windowed mode and enumerating adapters and outputs

This topic is 2088 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I'm a little confused about the proper way for a Windowed mode app, which must work nicely with multimonitor setups, to create its principal objects such as the device and swapchain.


Suppose I have a window (i.e. an HWND), which can be on any monitor (i.e. output), and I want to create a D3D11 device and swapchain for it. To keep things simple initially, I'll assume that the window doesn't span multiple monitors. How can I figure out which adapter and output the window lives on?


From reading the docs in the Jun 2010 DX SDK, it seems that the only available method for this type of query is IDXGISwapChain::GetContainingOutput. But this requires a swap chain to be created, which seems to require a device to be created, which seems to require me to guess which device / adapter contains my window, defeating the original object. I am assuming that adapters and devices are just different aspects of the same thing.


Do I really have to enumerate every adapter, creating a device and swapchain until I find the one that contains the majority of my window's client area? I guess I am probably missing something, or making some invalid assumptions.


All of the examples that I've looked at avoid this issue because either they use D3D11CreateDeviceAndSwapChain to create a device, or they operate in fullscreen mode, or they simply don't appear to care about working correctly on multimonitor setups.


IDXGISwapChain::GetContainingOutput only returns the output containing the majority of a window's client area, so I can't see how to support the more general case (find the complete set of adapters and outputs on which any part of the window's client area is visible).


I guess I could use D3D11CreateDeviceAndSwapChain, but I prefer to know what's really going on, and also to have the knowledge to make the application work in the most general case.


Thanks in advance for any wisdom.


Share this post

Link to post
Share on other sites

Having thought about it some more, it seems that if Windows cannot extend the desktop across multiple adapters, then the problem of finding my window goes away, and I can assume it is on the one-and-only desktop adapter.


Is my assumption that a window can be displayed on any (and more than one) adapter wrong?

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!