mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-09 12:48:32 +09:00
[Feat] (MG_Backend/DirectVulkan): native GPU indirect draws + draw parameters
- Enable multiDrawIndirect and shaderDrawParameters device features when supported (the latter via VkPhysicalDeviceShaderDrawParametersFeatures on Vulkan 1.1+), so DrawIndex/BaseInstance SPIR-V builtins are valid and vkCmdDrawIndexedIndirect(Count) may draw more than one command. - Plain glMultiDrawElementsIndirect no longer requires a GL_PARAMETER_BUFFER (it previously drew nothing for the standard Flywheel call); it now issues a native vkCmdDrawIndexedIndirect, with a per-command loop fallback when the multiDrawIndirect feature is unavailable. - glDrawElementsIndirect / glDrawArraysIndirect / glMultiDrawArraysIndirect read the live GPU buffer via native indirect draws instead of the CPU shadow (which cannot see compute-written commands); the CPU path remains only for client-memory commands. - Advertise the same five extensions as DirectGLES for Flywheel's capability probe. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -359,7 +359,9 @@ namespace MobileGL::MG_Backend::DirectVulkan {
|
||||
E_GL_ARB_multi_draw_indirect, E_GL_ARB_indirect_parameters,
|
||||
E_GL_EXT_framebuffer_object, E_GL_ARB_depth_texture, E_GL_ARB_buffer_storage,
|
||||
E_GL_ARB_texture_storage, E_GL_ARB_direct_state_access,
|
||||
E_GL_ARB_shader_draw_parameters, E_GL_ARB_gpu_shader_int64, E_GL_KHR_debug},
|
||||
E_GL_ARB_shader_draw_parameters, E_GL_ARB_gpu_shader_int64, E_GL_KHR_debug,
|
||||
E_GL_ARB_gpu_shader5, E_GL_ARB_multi_bind, E_GL_ARB_shading_language_420pack,
|
||||
E_GL_ARB_vertex_attrib_binding, E_GL_ARB_shader_image_size},
|
||||
.IsCompatibilityProfile = false
|
||||
},
|
||||
.StaticBackendCapability = {.AllowVSOnlyPrograms = false}} {}
|
||||
|
||||
Reference in New Issue
Block a user