-
-
Notifications
You must be signed in to change notification settings - Fork 296
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FrameID-labeled Present/Vsync Queue, Vulkan fixes, plus other improvements #196
Open
SRSaunders
wants to merge
17
commits into
bombomby:master
Choose a base branch
from
SRSaunders:vk-vsync-changes
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains 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
…isplay_timing extension
…n of graphics API
…unctions via vkGetInstanceProcAddr()
SRSaunders
force-pushed
the
vk-vsync-changes
branch
from
February 18, 2024 06:59
3ecf0ae
to
66b06ff
Compare
…e code to solve build issue
SRSaunders
force-pushed
the
vk-vsync-changes
branch
from
February 19, 2024 02:46
954dbab
to
2a1b010
Compare
SRSaunders
force-pushed
the
vk-vsync-changes
branch
from
February 20, 2024 21:45
799918d
to
a697a00
Compare
SRSaunders
force-pushed
the
vk-vsync-changes
branch
from
May 24, 2024 22:33
b81c57f
to
03a44ba
Compare
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 thehostQueryReset
feature, or alternatively for non-1.2 applications, enabling theVK_EXT_host_query_reset
extension.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 long
vsuint32_t
andint
vs.size_t
type 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.