KhronosGroup/Vulkan-Ecosystem

Not enough public info on how to optimize for Vulkan

godlikepanos opened this issue · 2 comments

Some IHVs and ISVs already shared some optimization tips using slides or blog posts or other means. This kind of information is scattered, sometimes outdated and generally not easy to find. Also, the guides already published put an emphasis on the CPU-side benefits of Vulkan with the GPU performance left (a bit) on the sidelines.

It would be interesting and beneficial to compile some kind of document with various optimization tips and techniques. One example can be how to efficiently update uniforms. Some mobile vendors suggest an "always mapped uniform ring buffer". Croteam also suggested an "always mapped transfer ring buffer" and at the end of the frame copy that (using the transfer queue) to a uniform buffer.

Also, it could be useful to compile a table witch contains Vulkan features/concepts and their importance/impact to vendors and GPU families. And by features/concepts I mean push_constants, immutable samplers, static state, combined image sampler, image layout transition, VkImageCreateInfo::sharingMode etc.

One random example:
immutable samplers: AMD: Don't care, ARM: Don't care, nVidia use them ....

Agreed, there's not enough IHV-specific information out there on best practices performance-wise, particularly on the GPU side.

This issue is somewhat related - a layer to check IHV-specific best practices could be derived from the kind of document you suggest here.

This repository is being archived as it has been replaced with the vulkan.org website (https://www.vulkan.org) and is no longer being maintained (i.e., issues posted here are no longer being addressed ). After reviewing issues posted here, most (if not all) have been resolved or have already been re-opened in Vulkan-Docs (https://github.com/KhronosGroup/Vulkan-Docs) or other repositories for further consideration. Therefore, all issues in this repository will be closed. If you believe your issue has not yet been resolved, please re-open in Vulkan-Docs. Thanks!