在 Vulkan 1.1 中使用 VK_EXT_full_screen_exclusive 的独家全屏?
Exclusive fullscreen using VK_EXT_full_screen_exclusive in Vulkan 1.1?
我读到使用独占全屏可以提高应用程序的性能,因为它绕过了 window 管理器。 VK_EXT_full_screen_exclusive
扩展名似乎正是用于此目的。我发现要使用它,我所要做的就是调用
VkResult vkAcquireFullScreenExclusiveModeEXT(
VkDevice device,
VkSwapchainKHR swapchain);
这样对我来说似乎有点太容易了,所以我想问一下我是否理解正确,我唯一要做的就是简单地调用这个单一函数。我也会使用一些关于这个主题的一般性建议。
如果它很重要,我正在使用 GLFW 处理我所有的 windowing 内容。
我建议你直接阅读specification。它将列出添加的函数和结构,以便您了解扩展的规模。 Valid Usage 部分会准确告诉您是否需要调用它。
IMO 更重要的是,独家全屏减少了输入延迟。如果它通过合成器,它会自动添加至少一整帧延迟。
另外,驱动程序应该在不需要扩展的情况下自行启用独占全屏,这一点也很清楚。这个扩展添加的只是对此的显式控制。如果合成器关闭,可以使用 PresentMon.
进行验证
现在开始使用:
- 如果您想使用
vkAcquireFullScreenExclusiveModeEXT
,您的交换链必须使用 VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
创建
- 如果您使用
VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
,"exclusiveness" 可能会丢失,您需要处理
- 使用扩展可能会影响来自表面查询的 returns(并且您需要使用扩展
pNext
结构)
- 只有在
fullScreenExclusiveSupported
上限受支持时才能使用 VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
- 扩展仅在 Windows
上受支持
我读到使用独占全屏可以提高应用程序的性能,因为它绕过了 window 管理器。 VK_EXT_full_screen_exclusive
扩展名似乎正是用于此目的。我发现要使用它,我所要做的就是调用
VkResult vkAcquireFullScreenExclusiveModeEXT(
VkDevice device,
VkSwapchainKHR swapchain);
这样对我来说似乎有点太容易了,所以我想问一下我是否理解正确,我唯一要做的就是简单地调用这个单一函数。我也会使用一些关于这个主题的一般性建议。
如果它很重要,我正在使用 GLFW 处理我所有的 windowing 内容。
我建议你直接阅读specification。它将列出添加的函数和结构,以便您了解扩展的规模。 Valid Usage 部分会准确告诉您是否需要调用它。
IMO 更重要的是,独家全屏减少了输入延迟。如果它通过合成器,它会自动添加至少一整帧延迟。
另外,驱动程序应该在不需要扩展的情况下自行启用独占全屏,这一点也很清楚。这个扩展添加的只是对此的显式控制。如果合成器关闭,可以使用 PresentMon.
进行验证现在开始使用:
- 如果您想使用
vkAcquireFullScreenExclusiveModeEXT
,您的交换链必须使用VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
创建
- 如果您使用
VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
,"exclusiveness" 可能会丢失,您需要处理 - 使用扩展可能会影响来自表面查询的 returns(并且您需要使用扩展
pNext
结构) - 只有在
fullScreenExclusiveSupported
上限受支持时才能使用VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
- 扩展仅在 Windows 上受支持