protonscr

Windows Fullscreen Optimizations seems to be disabled whenever dxvk is used

dxvkclosed windows
doitsujin/dxvk#2177 · opened 2021-07-20 by prolium · updated 2021-07-21 · 6 comments · github
Pprolium 2021-07-20 github

I rely on Windows Fullscreen Optimizations to be able to use applications that draw overlays over games without borderless fullscreen support, but whenever I use dxvk on these games this feature seems to be disabled. The games enter exclusive fullscreen mode and drawing overlays as well as toast notifications are hindered from being displayed.

I've searched for a complete day on this but nothing useful came up, what I'd like to do is to keep Windows Fullscreen Optimizations turned on, or rather force enabling it, and turning it off at will from the compatibility tab whenever it's not needed while at the same time use dxvk.

I could be wrong in this assumption, as in Windows Fullscreen Optimizations may be still turned on, but something else is causing this same behavior, the problem is I have no idea where to track this down to its root.

Software information

The games that I tried are Grand Theft Auto IV: The Complete Edition and Sherlock Holmes: The Devil's Daughter, the first uses DirectX 9 and the later uses DirectX 11.

System information

  • GPU: GTX 1070
  • Driver: 466.27 Game Ready
  • OS: Windows 10 v1903
  • DXVK version: 1.9 and master 11bbc07e (from workflow build)

Apitrace file(s)

The trace file would be useless in this case because it involves replacing d3d9.dll and dxgi.dll, hence the issue is not triggered. If it's absolutely necessary I can post it.

Log files

  • d3d9.log:
GTAIV_d3d9.log
info:  Game: GTAIV.exe
info:  DXVK: v1.9
info:  Found config file: dxvk.conf
info:  Found built-in config:
info:  Effective configuration:
info:    dxgi.emulateUMA = True
info:    d3d9.apitraceMode = True
info:    d3d9.dpiAware = True
info:    d3d9.evictManagedOnUnlock = False
info:    d3d9.shaderModel = 3
info:    dxgi.nvapiHack = False
info:    d3d9.customVendorId = 10DE
info:    dxgi.customVendorId = 10DE
info:    d3d9.maxFrameLatency = 1
info:    d3d11.apitraceMode = True
info:    dxgi.maxFrameLatency = 1
info:  Built-in extension providers:
info:    Win32 WSI
info:    OpenVR
info:    OpenXR
info:  OpenVR: could not open registry key, status 2
warn:  OpenVR: Failed to locate module
info:  Enabled instance extensions:
info:    VK_KHR_get_surface_capabilities2
info:    VK_KHR_surface
info:    VK_KHR_win32_surface
warn:  D3D9: VK_FORMAT_D16_UNORM_S8_UINT -> VK_FORMAT_D24_UNORM_S8_UINT
info:  NVIDIA GeForce GTX 1070:
info:    Driver: 466.27.0
info:    Vulkan: 1.2.168
info:    Memory Heap[0]: 
info:      Size: 8088 MiB
info:      Flags: 0x1
info:      Memory Type[7]: Property Flags = 0x1
info:    Memory Heap[1]: 
info:      Size: 8170 MiB
info:      Flags: 0x0
info:      Memory Type[0]: Property Flags = 0x0
info:      Memory Type[1]: Property Flags = 0x0
info:      Memory Type[2]: Property Flags = 0x0
info:      Memory Type[3]: Property Flags = 0x0
info:      Memory Type[4]: Property Flags = 0x0
info:      Memory Type[5]: Property Flags = 0x0
info:      Memory Type[6]: Property Flags = 0x0
info:      Memory Type[8]: Property Flags = 0x6
info:      Memory Type[9]: Property Flags = 0xe
info:    Memory Heap[2]: 
info:      Size: 214 MiB
info:      Flags: 0x1
info:      Memory Type[10]: Property Flags = 0x7
info:  Process set as DPI aware
info:  Device properties:
info:    Device name:     : NVIDIA GeForce GTX 1070
info:    Driver version   : 466.27.0
info:  Enabled device extensions:
info:    VK_EXT_4444_formats
info:    VK_EXT_conservative_rasterization
info:    VK_EXT_custom_border_color
info:    VK_EXT_depth_clip_enable
info:    VK_EXT_extended_dynamic_state
info:    VK_EXT_full_screen_exclusive
info:    VK_EXT_host_query_reset
info:    VK_EXT_memory_priority
info:    VK_EXT_robustness2
info:    VK_EXT_shader_demote_to_helper_invocation
info:    VK_EXT_shader_viewport_index_layer
info:    VK_EXT_transform_feedback
info:    VK_EXT_vertex_attribute_divisor
info:    VK_KHR_create_renderpass2
info:    VK_KHR_depth_stencil_resolve
info:    VK_KHR_draw_indirect_count
info:    VK_KHR_driver_properties
info:    VK_KHR_image_format_list
info:    VK_KHR_sampler_mirror_clamp_to_edge
info:    VK_KHR_shader_float_controls
info:    VK_KHR_swapchain
info:  Device features:
info:    robustBufferAccess                     : 1
info:    fullDrawIndexUint32                    : 1
info:    imageCubeArray                         : 1
info:    independentBlend                       : 1
info:    geometryShader                         : 1
info:    tessellationShader                     : 0
info:    sampleRateShading                      : 1
info:    dualSrcBlend                           : 0
info:    logicOp                                : 0
info:    multiDrawIndirect                      : 0
info:    drawIndirectFirstInstance              : 0
info:    depthClamp                             : 1
info:    depthBiasClamp                         : 1
info:    fillModeNonSolid                       : 1
info:    depthBounds                            : 1
info:    multiViewport                          : 1
info:    samplerAnisotropy                      : 1
info:    textureCompressionBC                   : 1
info:    occlusionQueryPrecise                  : 1
info:    pipelineStatisticsQuery                : 1
info:    vertexPipelineStoresAndAtomics         : 1
info:    fragmentStoresAndAtomics               : 0
info:    shaderImageGatherExtended              : 0
info:    shaderStorageImageExtendedFormats      : 0
info:    shaderStorageImageReadWithoutFormat    : 0
info:    shaderStorageImageWriteWithoutFormat   : 1
info:    shaderClipDistance                     : 1
info:    shaderCullDistance                     : 1
info:    shaderFloat64                          : 0
info:    shaderInt64                            : 0
info:    variableMultisampleRate                : 0
info:  VK_EXT_4444_formats
info:    formatA4R4G4B4                         : 1
info:    formatA4B4G4R4                         : 1
info:  VK_EXT_custom_border_color
info:    customBorderColors                     : 1
info:    customBorderColorWithoutFormat         : 1
info:  VK_EXT_depth_clip_enable
info:    depthClipEnable                        : 1
info:  VK_EXT_extended_dynamic_state
info:    extendedDynamicState                   : 1
info:  VK_EXT_host_query_reset
info:    hostQueryReset                         : 1
info:  VK_EXT_memory_priority
info:    memoryPriority                         : 1
info:  VK_EXT_robustness2
info:    robustBufferAccess2                    : 0
info:    robustImageAccess2                     : 0
info:    nullDescriptor                         : 1
info:  VK_EXT_shader_demote_to_helper_invocation
info:    shaderDemoteToHelperInvocation         : 1
info:  VK_EXT_transform_feedback
info:    transformFeedback                      : 0
info:    geometryStreams                        : 0
info:  VK_EXT_vertex_attribute_divisor
info:    vertexAttributeInstanceRateDivisor     : 1
info:    vertexAttributeInstanceRateZeroDivisor : 1
info:  Queue families:
info:    Graphics : 0
info:    Transfer : 1
info:  DXVK: Read 365 valid state cache entries
info:  DXVK: Using 5 compiler threads
info:  D3D9DeviceEx::ResetSwapChain:
info:    Requested Presentation Parameters
info:      - Width:              1920
info:      - Height:             1080
info:      - Format:             D3D9Format::A8R8G8B8
info:      - Auto Depth Stencil: false
info:                  ^ Format: D3D9Format::D24S8
info:      - Windowed:           false
info:  Presenter: Actual swap chain properties:
info:    Format:       VK_FORMAT_B8G8R8A8_UNORM
info:    Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR
info:    Buffer size:  1920x1061
info:    Image count:  3
info:    Exclusive FS: 0
info:  Setting display mode: 1920x1080@0
warn:  D3D9DeviceEx::QueryInterface: Unknown interface query
warn:  db6f6ddb-ac77-4e88-8253-819df9bbf140
warn:  D3D9DeviceEx::QueryInterface: Unknown interface query
warn:  9b7e4c0f-342c-4106-a19f-4f2704f689f0
warn:  ConvertFormat: Unknown format encountered: 1396921934
info:  Game: GTAIV.exe
info:  DXVK: v1.9
info:  Found config file: dxvk.conf
info:  Found built-in config:
info:  Effective configuration:
info:    dxgi.emulateUMA = True
info:    d3d9.apitraceMode = True
info:    d3d9.dpiAware = True
info:    d3d9.evictManagedOnUnlock = False
info:    d3d9.shaderModel = 3
info:    dxgi.nvapiHack = False
info:    d3d9.customVendorId = 10DE
info:    dxgi.customVendorId = 10DE
info:    d3d9.maxFrameLatency = 1
info:    d3d11.apitraceMode = True
info:    dxgi.maxFrameLatency = 1
info:  Built-in extension providers:
info:    Win32 WSI
info:    OpenVR
info:    OpenXR
info:  OpenVR: could not open registry key, status 2
warn:  OpenVR: Failed to locate module
info:  Enabled instance extensions:
info:    VK_KHR_get_surface_capabilities2
info:    VK_KHR_surface
info:    VK_KHR_win32_surface
warn:  D3D9: VK_FORMAT_D16_UNORM_S8_UINT -> VK_FORMAT_D24_UNORM_S8_UINT
info:  NVIDIA GeForce GTX 1070:
info:    Driver: 466.27.0
info:    Vulkan: 1.2.168
info:    Memory Heap[0]: 
info:      Size: 8088 MiB
info:      Flags: 0x1
info:      Memory Type[7]: Property Flags = 0x1
info:    Memory Heap[1]: 
info:      Size: 8170 MiB
info:      Flags: 0x0
info:      Memory Type[0]: Property Flags = 0x0
info:      Memory Type[1]: Property Flags = 0x0
info:      Memory Type[2]: Property Flags = 0x0
info:      Memory Type[3]: Property Flags = 0x0
info:      Memory Type[4]: Property Flags = 0x0
info:      Memory Type[5]: Property Flags = 0x0
info:      Memory Type[6]: Property Flags = 0x0
info:      Memory Type[8]: Property Flags = 0x6
info:      Memory Type[9]: Property Flags = 0xe
info:    Memory Heap[2]: 
info:      Size: 214 MiB
info:      Flags: 0x1
info:      Memory Type[10]: Property Flags = 0x7
info:  Process set as DPI aware
info:  D3D9DeviceEx::ResetSwapChain:
info:    Requested Presentation Parameters
info:      - Width:              1920
info:      - Height:             1080
info:      - Format:             D3D9Format::A8R8G8B8
info:      - Auto Depth Stencil: false
info:                  ^ Format: D3D9Format::D24S8
info:      - Windowed:           false
info:  Setting display mode: 1920x1080@60
info:  Presenter: Actual swap chain properties:
info:    Format:       VK_FORMAT_B8G8R8A8_UNORM
info:    Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR
info:    Buffer size:  1920x1080
info:    Image count:  3
info:    Exclusive FS: 0
  • d3d11.log:
    N/A
  • dxgi.log:
    N/A
Aaufkrawall 2021-07-21 github

I think the Nvidia driver (deliberately?) avoids FSO with Vulkan fullscreen, even when selecting borderless in native Vulkan applications. AMD does the same (in a bugged way, of course), so this very likely not within DXVK's scope.

KK0bin maintainer 2021-07-21 github

DXVK deliberately enables exclusive fullscreen on Windows as far as I know.

Ddoitsujin maintainer 2021-07-21 github

FSO does not support Vulkan applications. We already enable the exclusive fullscreen hint to ask the driver to make presentation fast if possible, but we don't have control over Windows features like this that are limited to DirectX.

Pprolium 2021-07-21 github

Oh I didn't know that, this definitely explains the issue. Thanks everyone.
Is there an option/setting to allow borderless fullscreen ? I know it won't solve the issue I'm facing, just a question out of curiosity.

Aaufkrawall 2021-07-21 github

When I set RDR2 or Strange Brigade Vulkan to borderless on Windows 10 21H1 + Nvidia, there is still tearing and Windows audio volume OSD isn't visible when pressing the corresponding keyboard buttons. So I think there is no "borderless" available at all with Vulkan on Windows.

Pprolium 2021-07-21 github

You're right, just tried it and yeah the borderless fullscreen on this game seems "broken" when using Vulkan.
I was using DirectX 12 and totally forgot that it has native Vulkan integration.
Thanks again for your time.

DLLs