FrameID-labeled Present/Vsync Queue, Vulkan fixes, plus other improvements#196
Open
SRSaunders wants to merge 17 commits intobombomby:masterfrom
Open
FrameID-labeled Present/Vsync Queue, Vulkan fixes, plus other improvements#196SRSaunders wants to merge 17 commits intobombomby:masterfrom
SRSaunders wants to merge 17 commits intobombomby:masterfrom
Conversation
…isplay_timing extension
…n of graphics API
…unctions via vkGetInstanceProcAddr()
3ecf0ae to
66b06ff
Compare
…e code to solve build issue
954dbab to
2a1b010
Compare
799918d to
a697a00
Compare
b81c57f to
03a44ba
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I have been meaning to post these changes for a while, but am finally getting around to it now. They were developed for use in RBDoom3BFG and run on all platforms: Windows, Linux, and macOS. They are a combination of bug fixes and feature enhancements as follows:
vkResetQueryPool()vs.vkCmdResetQueryPool()when resolving timestamps. Note this requires instance initialization using Vulkan 1.2 and enabling thehostQueryResetfeature, or alternatively for non-1.2 applications, enabling theVK_EXT_host_query_resetextension.VK_GOOGLE_display_timing_extension.VK_GOOGLE_display_timing_extension. The feature is non-platform specific, but the extension is currently supported only on macOS/MoltenVK as far as I can tell. If other platforms were to implement the extension, the feature would work there as well.OPTICK_GPU_CONTEXT/GPUContextScope()which allows runtime selection of the graphics API for Optick (i.e. DX12 or Vulkan) without recompilation or reconfiguration.vkGetInstanceProcAddr()function pointer. Now discovers and assigns dynamic Vulkan functions separately for each device/node vs. assigning them globally. Static and manually assigned Vulkan functions remain global across devices/nodes.vsprintf()deprecation, as well asunsigned longvsuint32_tandintvs.size_ttype mismatches.OPTICK_STORAGE_TAG(STORAGE, CPU_TIMESTAMP, NAME, ...)Note: To implement these improvements I had to make a small number of Optick API changes. I tried to limit these to as few as possible to preserve some portability. Specifically, I had to add arguments to
OPTICK_GPU_INIT_VULKAN()andOPTICK_GPU_FLIP(), plus add new Vulkan function pointers toVulkanFunctions. Please be aware that if you adopt this PR into an existing Optick implementation you may need to make a few changes.