tornavis/source/blender/gpu/vulkan
Jeroen Bakker f76ceddc98 Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats
On some platforms `VK_FORMAT_R8G8B8_*` are not supported as vertex buffers. The
obvious workaround for this is to use `VK_FORMAT_R8G8B8A8_*`. Using unsupported
vertex formats would crash Blender as it is not able to compile the graphics
pipelines that use them.

Known platforms are:
- NVIDIA Mobile GPUs (Quadro M1000M)
- AMD Polaris (open source drivers)

This PR adds the initial workings for other unsupported vertex buffer formats we
need to fix in the future.

`VKDevice.workarounds.vertex_formats` contain booleans if the workaround for
a specific format should be turned on (`r8g8b8 = true`). `VertexFormatConverter` can be
used to identify if conversions are needed and perform the conversion.

Pull Request: https://projects.blender.org/blender/blender/pulls/114572
2023-11-08 09:44:22 +01:00
..
vk_backend.cc Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_backend.hh Vulkan: Postpone Resource Destruction 2023-09-18 13:42:17 +02:00
vk_batch.cc Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_batch.hh Vulkan: Indirect Drawing 2023-08-21 08:55:55 +02:00
vk_bindable_resource.cc License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_bindable_resource.hh Vulkan: Fix Namespace Collision Between Shader Resources 2023-09-18 13:41:50 +02:00
vk_buffer.cc Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_buffer.hh Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_command_buffer.cc Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_command_buffer.hh Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_command_buffers.cc Vulkan: Specify Pipeline Stages When Adding Barriers 2023-11-03 14:24:39 +01:00
vk_command_buffers.hh Vulkan: Specify Pipeline Stages When Adding Barriers 2023-11-03 14:24:39 +01:00
vk_common.cc Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_common.hh Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_context.cc Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_context.hh Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_data_conversion.cc Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_data_conversion.hh Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_data_conversion_test.cc Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_debug.cc Cleanup: spelling in comments 2023-10-14 13:53:00 +11:00
vk_debug.hh Cleanup: quiet compiler warnings, correct doxy section 2023-08-30 10:57:17 +10:00
vk_descriptor_pools.cc License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_descriptor_pools.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_descriptor_set.cc Vulkan: Rework Initializing/Allocating Textures 2023-09-28 09:38:52 +02:00
vk_descriptor_set.hh Vulkan: Fix Namespace Collision Between Shader Resources 2023-09-18 13:41:50 +02:00
vk_device.cc Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_device.hh Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_drawlist.cc License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_drawlist.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_fence.cc Vulkan: Show Missing Implementations 2023-09-21 15:21:32 +02:00
vk_fence.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_framebuffer.cc Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_framebuffer.hh Vulkan: Add Support for sRGB Framebuffer Enablement 2023-10-19 14:41:18 +02:00
vk_image_view.cc Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_image_view.hh Vulkan: Add Support for sRGB Framebuffer Enablement 2023-10-19 14:41:18 +02:00
vk_immediate.cc Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_immediate.hh Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_index_buffer.cc Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_index_buffer.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_memory.cc License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_memory.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_memory_layout.cc Fix: Vulkan Grid Overlay 2023-09-19 11:52:59 +02:00
vk_memory_layout.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_pipeline.cc Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_pipeline.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_pipeline_state.cc Vulkan: Replace Stencil Test Not Working 2023-10-31 13:41:15 +01:00
vk_pipeline_state.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_pixel_buffer.cc Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_pixel_buffer.hh Vulkan: Add support for Framebuffer Depth Blit 2023-09-28 10:00:24 +02:00
vk_push_constants.cc Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_push_constants.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_query.cc Vulkan: Show Missing Implementations 2023-09-21 15:21:32 +02:00
vk_query.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_resource_tracker.cc Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_resource_tracker.hh Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_sampler.cc License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_sampler.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_shader.cc Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_shader.hh Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_shader_interface.cc Vulkan: Use Point Shaders When Drawing Points 2023-09-26 16:04:08 +02:00
vk_shader_interface.hh Vulkan: Use Point Shaders When Drawing Points 2023-09-26 16:04:08 +02:00
vk_shader_log.cc License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_shader_log.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_state_manager.cc Vulkan: Separate DataTransfer, Compute, Graphics Commands 2023-10-30 14:21:14 +01:00
vk_state_manager.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_storage_buffer.cc Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_storage_buffer.hh GPU: Add explicit API to sync storage buffer back to host 2023-10-20 17:04:36 +02:00
vk_texture.cc Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_texture.hh Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_uniform_buffer.cc Cleanup: Vulkan: Replace FlagBits with Flags 2023-11-03 14:42:12 +01:00
vk_uniform_buffer.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
vk_vertex_attribute_object.cc Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_vertex_attribute_object.hh Vulkan: Bind Dummy Vertex Attributes 2023-08-22 13:35:01 +02:00
vk_vertex_buffer.cc Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00
vk_vertex_buffer.hh Vulkan: Workaround for Unsupported R8G8B8 Vertex Buffer Formats 2023-11-08 09:44:22 +01:00