diff --git a/sources/Renderer/Metal/Command/MTCommandExecutor.mm b/sources/Renderer/Metal/Command/MTCommandExecutor.mm index d179a0be43..1fb3c73c32 100644 --- a/sources/Renderer/Metal/Command/MTCommandExecutor.mm +++ b/sources/Renderer/Metal/Command/MTCommandExecutor.mm @@ -304,10 +304,12 @@ else { id renderEncoder = context.FlushAndGetRenderEncoder(); - if (cmd->instanceCount != 1) + const bool hasBaseInstance = (cmd->baseInstance != 0); + if (cmd->instanceCount != 1 || hasBaseInstance) { - if (cmd->baseInstance != 0) + if (hasBaseInstance) { + /* Suppored since iOS 9.0 */ [renderEncoder drawPrimitives: context.GetPrimitiveType() vertexStart: cmd->vertexStart @@ -318,6 +320,7 @@ } else { + /* Suppored since iOS 8.0 */ [renderEncoder drawPrimitives: context.GetPrimitiveType() vertexStart: cmd->vertexStart @@ -328,6 +331,7 @@ } else { + /* Suppored since iOS 8.0 */ [renderEncoder drawPrimitives: context.GetPrimitiveType() vertexStart: cmd->vertexStart @@ -362,10 +366,12 @@ else { id renderEncoder = context.FlushAndGetRenderEncoder(); - if (cmd->instanceCount != 1) + const bool hasBaseVertexOrInstance = (cmd->baseVertex != 0 || cmd->baseInstance != 0); + if (cmd->instanceCount != 1 || hasBaseVertexOrInstance) { - if (cmd->baseVertex != 0 || cmd->baseInstance != 0) + if (hasBaseVertexOrInstance) { + /* Suppored since iOS 9.0 */ [renderEncoder drawIndexedPrimitives: context.GetPrimitiveType() indexCount: cmd->indexCount @@ -379,6 +385,7 @@ } else { + /* Suppored since iOS 8.0 */ [renderEncoder drawIndexedPrimitives: context.GetPrimitiveType() indexCount: cmd->indexCount @@ -391,6 +398,7 @@ } else { + /* Suppored since iOS 8.0 */ [renderEncoder drawIndexedPrimitives: context.GetPrimitiveType() indexCount: cmd->indexCount