Setting fullscreen state (DXGI_SWAP_CHAIN_DESC.Windowed = 0) with a resolution lower than native will result in the image being centered on screen but not filling out the whole monitor (windowboxed image). I’ve also set DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH when creating the swap chain, or calling ResizeBuffers, and have confirmed that it’s still set by calling GetDesc after creation and resizing. Testing with a debug device gave me an error saying that the chosen mode wasn’t in display mode list, fixed that by calling “FindClosestMatchingMode”. But still didn’t fix the issue. Now i get the following warning when resizing buffers:
DXGI WARNING: IDXGISwapChain::Present: Fullscreen presentation inefficiencies incurred due to application not using IDXGISwapChain::ResizeBuffers appropriately, specifying a DXGI_MODE_DESC not available in IDXGIOutput::GetDisplayModeList, or not using DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH.DXGI_SWAP_CHAIN_DESC::BufferDesc = { 1280, 768, { 60000, 1000 }, R8G8B8A8_UNORM_SRGB, 1, 0 }; DXGI_SWAP_CHAIN_DESC::SampleDesc = { 1, 0 }; DXGI_SWAP_CHAIN_DESC::Flags = 0x2; [ MISCELLANEOUS WARNING #98: ]
I am using a mode in the display mode list and DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH is set (see the flags parameters). I’ve also tried with Driver versions 334.89 and 337.88.
Originally I thought that this was a problem in my code, but now I’m experiencing it in other comercial games. I launched Dragon Age Origins and was seeing the issue, and I launched Borderlands 2 and was also seeing the issue.