bigwheels icon indicating copy to clipboard operation
bigwheels copied to clipboard

[glTF] Load UINT8 indices into UINT16 buffer

Open footballhead opened this issue 1 year ago • 6 comments

Without extensions, Vulkan only supports UINT16 and UINT32 index buffers. However, glTF allows UINT8 index buffers. We can support scenes with UINT8 indices by repacking them into a UINT16 buffer instead. This comes at the cost of a larger GPU buffer.

This allows us to load more Khronos glTF-Sample-Assets like TextureCoordinateTest.

Fixes #453

footballhead avatar Jun 11 '24 22:06 footballhead

Seems like the required extension is https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_8bit_storage.html Promoted to core in VK 1.2. BigWheels default is Vulkan1.2, so I'd say we should probably leave the buffer as-is, and request the extension?

Keenuts avatar Jun 12 '24 11:06 Keenuts

Sg I'll look at adding UINT8 support to Geometry instead

footballhead avatar Jun 12 '24 14:06 footballhead

Actually I'm looking at https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_index_type_uint8.html which I believe is required for VK_INDEX_TYPE_UINT8_KHR. That's what I think I need for UINT8 support in Geometry. I don't see that it's been promoted

footballhead avatar Jun 12 '24 14:06 footballhead

Ahh right, index buffer, not storage buffer, sorry I missed that! Not promoted, but seems like it's widely supported (>70% on Sasha willems' DB) since it was a VK_EXT_index_type_int8 before.

Keenuts avatar Jun 13 '24 07:06 Keenuts

I tried on three devices I have (1 software lavapipe, and 2 android) and they all support VK_EXT_index_type_uint8. According to https://vulkan.gpuinfo.org/listextensions.php support for the extension is at 62%. Would it make sense to support UINT8 through the extension, or perhaps fall back to repacking if it is not available?

apazylbe avatar Jun 17 '24 14:06 apazylbe

I like the idea of supporting the extension with this as a fallback. I'll look into how to make that happen.

footballhead avatar Jun 17 '24 18:06 footballhead

I've incorporated #515 and #486 into this PR so it should be ready for review

footballhead avatar Sep 17 '24 15:09 footballhead

@apazylbe I made some non-trivial changes that I'd like you to review.

footballhead avatar Nov 04 '24 22:11 footballhead

@apazylbe merge conflicts are solved

footballhead avatar Nov 19 '24 16:11 footballhead