SaschaWillems / Vulkan

C++ examples for the Vulkan graphics API
MIT License
10.18k stars 2.02k forks source link

Separated Positions From Other Attributes in Gears #1138

Closed ahcox closed 3 months ago

ahcox commented 3 months ago

Implemented the advice, "Use a dedicated, tightly packed, vertex buffer for position data." from Arm® GPU Best Practices Version 3.2 Developer Guide. This allows triangles to be binned and culled on all major mobile GPUs without having to read normals and colors for the binning pass, thus saving bandwidth.

ahcox commented 3 months ago

Closing this as I realise I kind of spammed the repo with PRs and if you find time to look at the ones I raised I would prefer you concentrated on this one as a potential defect: https://github.com/SaschaWillems/Vulkan/pull/1135

...and these two as reasonable enhancements: https://github.com/SaschaWillems/Vulkan/pull/1136 https://github.com/SaschaWillems/Vulkan/pull/1137

This one #1138 is more intrusive and controversial, making the example harder to learn from for people new to Vulkan. Feel free to reopen it though: it ran fine on Ubuntu 23.10 on the Intel integrated GPU I have with validation enabled and on a Pixel 6 Android device.