René's URL Explorer Experiment


Title: Potential performance issues raised by Best Practice and Performance validation layers · Issue #1523 · vsg-dev/VulkanSceneGraph · GitHub

Open Graph Title: Potential performance issues raised by Best Practice and Performance validation layers · Issue #1523 · vsg-dev/VulkanSceneGraph

X Title: Potential performance issues raised by Best Practice and Performance validation layers · Issue #1523 · vsg-dev/VulkanSceneGraph

Description: To try and discover why vkBeginCommandBuffer is taking much longer than I consider reasonable, I ran vsgviewer with some of the optional extra validation layers active. Here are some of the things it reported: BestPractices-deprecated-ex...

Open Graph Description: To try and discover why vkBeginCommandBuffer is taking much longer than I consider reasonable, I ran vsgviewer with some of the optional extra validation layers active. Here are some of the things ...

X Description: To try and discover why vkBeginCommandBuffer is taking much longer than I consider reasonable, I ran vsgviewer with some of the optional extra validation layers active. Here are some of the things ...

Opengraph URL: https://github.com/vsg-dev/VulkanSceneGraph/issues/1523

X: @github

direct link

Domain: patch-diff.githubusercontent.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Potential performance issues raised by Best Practice and Performance validation layers","articleBody":"To try and discover why `vkBeginCommandBuffer` is taking much longer than I consider reasonable, I ran vsgviewer with some of the optional extra validation layers active. Here are some of the things it reported:\n\n```\nBestPractices-deprecated-extension(WARN / SPEC): msgNum: -628989766 - Validation Warning: [ BestPractices-deprecated-extension ] | MessageID = 0xda8260ba | vkCreateInstance(): Attempting to enable deprecated extension VK_KHR_get_physical_device_properties2, but this extension has been promoted to 1.1.0 (0x00401000).\n```\nAs we pass the Vulkan version from the window traits to `vkEnumerateInstanceVersion`, it can be raised to a version after the `VK_KHR_get_physical_device_properties2` was deprecated and replaced by core functionality, so `WindowTraits::defaults` should check that the version's lower than 1.1.0 before adding the extension to the list. I don't see any way this could affect performance with sane drivers, though.\n\n```\nBestPractices-vkCreateCommandPool-command-buffer-reset(WARN / PERF): msgNum: 141128897 - Validation Performance Warning: [ BestPractices-vkCreateCommandPool-command-buffer-reset ] | MessageID = 0x86974c1 | vkCreateCommandPool(): pCreateInfo-\u003eflags has VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT set. Consider resetting entire pool instead.\n```\nThis looks pretty self-explanatory. It seems some drivers are happier with transient command buffers that are allocated from the pool, used once, then deleted, and happier still with command buffers that are allocated from the pool, used once, then reallocated behind the scenes by resetting their pool. Obviously, this can mean one pool might need splitting up if it was used to allocate command buffers protected by separate fences. At first glance, this seems to be pretty likely to be related to the problem that prompted me to investigate in the first place.\n\n```\nBestPractices-AMD-CreatePipelinesLayout-KeepLayoutSmall(WARN / PERF): msgNum: -2011419003 - Validation Performance Warning: [ BestPractices-AMD-CreatePipelinesLayout-KeepLayoutSmall ] | MessageID = 0x881c2e85 | vkCreatePipelineLayout(): [AMD] pipeline layout size is too large. Prefer smaller pipeline layouts.Descriptor sets cost 1 DWORD each. Dynamic buffers cost 2 DWORDs each when robust buffer access is OFF. Dynamic buffers cost 4 DWORDs each when robust buffer access is ON. Push constants cost 1 DWORD per 4 bytes in the Push constant range. \n```\nThe pipeline layout this is logged in relation to only has two descriptor set layouts, but it's got the full 128 byte push constant range used for both the view and projection matrix, so the pipeline layout is 2 + 32 `DWORD`s in size. It seems like moving the projection matrix to the view-dependent descriptor set, as has previously been suggested, might be beneficial for performance.\n\n```\nBestPractices-PipelineBarrier-readToReadBarrier(WARN / PERF): msgNum: 49690623 - Validation Performance Warning: [ BestPractices-PipelineBarrier-readToReadBarrier ] Object 0: handle = 0x2a1426c9ba0, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x2f637ff | vkCmdPipelineBarrier(): [AMD] [NVIDIA] Don't issue read-to-read barriers. Get the resource in the right state the first time you use it.\n    Objects: 1\n        [0] 0x2a1426c9ba0, type: 6, name: NULL\n```\nThis is triggered by `vsg::transferImageData(ref_ptr\u003cImageView\u003e imageView, VkImageLayout targetImageLayout, Data::Properties properties, uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevels, const Data::MipmapOffsets\u0026 mipmapOffsets, ref_ptr\u003cBuffer\u003e stagingBuffer, VkDeviceSize stagingBufferOffset, VkCommandBuffer commandBuffer, vsg::Device* device)` by the second `vkCmdPipelineBarrier` call in the loop that generates mipmaps. I'm a little confused as to why as the code's pretty similar to the equivalent part of vulkan-tutorial.com's mipmapping tutorial.\n\n```\nBestPractices-SyncObjects-HighNumberOfFences(WARN / PERF): msgNum: -1443561624 - Validation Performance Warning: [ BestPractices-SyncObjects-HighNumberOfFences ] | MessageID = 0xa9f4ff68 | vkCreateFence(): [AMD] [NVIDIA] High number of VkFence objects created. 4 created, but recommended max is 3. Minimize the amount of CPU-GPU synchronization that is used. Each fence has a CPU and GPU overhead cost with it.\n```\nAgain, this seems fairly self-explanatory.\n\n```\nBestPractices-pipeline-stage-flags-compute(WARN / SPEC): msgNum: -107494158 - Validation Warning: [ BestPractices-pipeline-stage-flags-compute ] Object 0: handle = 0x2a141f75030, type = VK_OBJECT_TYPE_QUEUE; | MessageID = 0xf997c4f2 | vkQueueSubmit(): pSubmits[0].pWaitDstStageMask[0] using VK_PIPELINE_STAGE_ALL_COMMANDS_BIT\n    Objects: 1\n        [0] 0x2a141f75030, type: 4, name: NULL\n```\nI think it thinks we shouldn't wait for all commands, just the ones that we absolutely have to.\n\nAs far as I can tell, all of these are things that will affect any VSG-based application running on drivers that care about these usage patterns.","author":{"url":"https://github.com/AnyOldName3","@type":"Person","name":"AnyOldName3"},"datePublished":"2025-07-09T18:26:44.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4},"url":"https://github.com/1523/VulkanSceneGraph/issues/1523"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:cb3d120e-ed82-df08-07f1-0e7237913f84
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-id809A:1D88:100C48A:150CBE5:698C2FE7
html-safe-nonce5a7540785c063d1668fc722cac40bf16dbadb016aedf297ca65c12ed4c363169
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4MDlBOjFEODg6MTAwQzQ4QToxNTBDQkU1OjY5OEMyRkU3IiwidmlzaXRvcl9pZCI6IjU0NzgzMzcxNDcxNDYxOTg3OSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmacf77853835056887b144f23485e275a2b506c10dd77749c14153482fbf99b802e
hovercard-subject-tagissue:3216782504
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/vsg-dev/VulkanSceneGraph/1523/issue_layout
twitter:imagehttps://opengraph.githubassets.com/30475121f846e6fc9d144093244a13dcdc60bd5243a4a1b3aad718e30bf9215b/vsg-dev/VulkanSceneGraph/issues/1523
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/30475121f846e6fc9d144093244a13dcdc60bd5243a4a1b3aad718e30bf9215b/vsg-dev/VulkanSceneGraph/issues/1523
og:image:altTo try and discover why vkBeginCommandBuffer is taking much longer than I consider reasonable, I ran vsgviewer with some of the optional extra validation layers active. Here are some of the things ...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameAnyOldName3
hostnamegithub.com
expected-hostnamegithub.com
None640eeb7b6ff4d8d106235d228c0c286e82592d4d2403227b5b2b4fc5832297a4
turbo-cache-controlno-preview
go-importgithub.com/vsg-dev/VulkanSceneGraph git https://github.com/vsg-dev/VulkanSceneGraph.git
octolytics-dimension-user_id44898258
octolytics-dimension-user_loginvsg-dev
octolytics-dimension-repository_id148609004
octolytics-dimension-repository_nwovsg-dev/VulkanSceneGraph
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id148609004
octolytics-dimension-repository_network_root_nwovsg-dev/VulkanSceneGraph
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release3d444f0a47beeeac94cddbb51c91ab408befe8d4
ui-targetcanary-1
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/issues/1523#start-of-content
https://patch-diff.githubusercontent.com/
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fvsg-dev%2FVulkanSceneGraph%2Fissues%2F1523
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fvsg-dev%2FVulkanSceneGraph%2Fissues%2F1523
Sign up https://patch-diff.githubusercontent.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=vsg-dev%2FVulkanSceneGraph
Reloadhttps://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/issues/1523
Reloadhttps://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/issues/1523
Reloadhttps://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/issues/1523
vsg-dev https://patch-diff.githubusercontent.com/vsg-dev
VulkanSceneGraphhttps://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph
Notifications https://patch-diff.githubusercontent.com/login?return_to=%2Fvsg-dev%2FVulkanSceneGraph
Fork 266 https://patch-diff.githubusercontent.com/login?return_to=%2Fvsg-dev%2FVulkanSceneGraph
Star 1.7k https://patch-diff.githubusercontent.com/login?return_to=%2Fvsg-dev%2FVulkanSceneGraph
Code https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph
Issues 31 https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/issues
Pull requests 13 https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/pulls
Discussions https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/discussions
Actions https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/actions
Projects 0 https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/projects
Security 0 https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/security
Insights https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/pulse
Code https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph
Issues https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/issues
Pull requests https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/pulls
Discussions https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/discussions
Actions https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/actions
Projects https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/projects
Security https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/security
Insights https://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/pulse
New issuehttps://patch-diff.githubusercontent.com/login?return_to=https://github.com/vsg-dev/VulkanSceneGraph/issues/1523
New issuehttps://patch-diff.githubusercontent.com/login?return_to=https://github.com/vsg-dev/VulkanSceneGraph/issues/1523
Potential performance issues raised by Best Practice and Performance validation layershttps://patch-diff.githubusercontent.com/vsg-dev/VulkanSceneGraph/issues/1523#top
https://github.com/AnyOldName3
https://github.com/AnyOldName3
AnyOldName3https://github.com/AnyOldName3
on Jul 9, 2025https://github.com/vsg-dev/VulkanSceneGraph/issues/1523#issue-3216782504
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.