From 13aafdcec00ddbb497c35bdb3c9375863f40f8a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=80=D0=B0=D0=BD=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9A?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=9F=D0=B8=D1=9B?= Date: Thu, 19 Nov 2020 06:46:48 -0800 Subject: [PATCH] Metal: Add BGFX_CAPS_VERTEX_ID support. --- src/renderer_mtl.mm | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/renderer_mtl.mm b/src/renderer_mtl.mm index 71257d2d7..30bc9a2d9 100644 --- a/src/renderer_mtl.mm +++ b/src/renderer_mtl.mm @@ -478,6 +478,7 @@ namespace bgfx { namespace mtl g_caps.supported |= (0 | BGFX_CAPS_ALPHA_TO_COVERAGE | BGFX_CAPS_BLEND_INDEPENDENT + | BGFX_CAPS_COMPUTE | BGFX_CAPS_FRAGMENT_DEPTH | BGFX_CAPS_INDEX32 | BGFX_CAPS_INSTANCING @@ -491,7 +492,7 @@ namespace bgfx { namespace mtl | BGFX_CAPS_TEXTURE_READ_BACK | BGFX_CAPS_VERTEX_ATTRIB_HALF | BGFX_CAPS_VERTEX_ATTRIB_UINT10 - | BGFX_CAPS_COMPUTE + | BGFX_CAPS_VERTEX_ID ); if (BX_ENABLED(BX_PLATFORM_IOS) ) @@ -4551,6 +4552,7 @@ namespace bgfx { namespace mtl if (0 != currentState.m_streamMask) { uint32_t numVertices = draw.m_numVertices; + if (UINT32_MAX == numVertices) { const VertexBufferMtl& vb = m_vertexBuffers[currentState.m_stream[0].m_handle.idx]; @@ -4580,9 +4582,9 @@ namespace bgfx { namespace mtl MTLIndexType indexType = 0 == (ib.m_flags & BGFX_BUFFER_INDEX32) ? MTLIndexTypeUInt16 : MTLIndexTypeUInt32; numDrawIndirect = UINT16_MAX == draw.m_numIndirect - ? vb.m_size/BGFX_CONFIG_DRAW_INDIRECT_STRIDE - : draw.m_numIndirect - ; + ? vb.m_size/BGFX_CONFIG_DRAW_INDIRECT_STRIDE + : draw.m_numIndirect + ; for (uint32_t ii = 0; ii < numDrawIndirect; ++ii) { @@ -4592,9 +4594,10 @@ namespace bgfx { namespace mtl else { numDrawIndirect = UINT16_MAX == draw.m_numIndirect - ? vb.m_size/BGFX_CONFIG_DRAW_INDIRECT_STRIDE - : draw.m_numIndirect - ; + ? vb.m_size/BGFX_CONFIG_DRAW_INDIRECT_STRIDE + : draw.m_numIndirect + ; + for (uint32_t ii = 0; ii < numDrawIndirect; ++ii) { rce.drawPrimitives(prim.m_type,vb.m_ptr, (draw.m_startIndirect + ii) * BGFX_CONFIG_DRAW_INDIRECT_STRIDE);