Metal: Add BGFX_CAPS_VERTEX_ID support.

This commit is contained in:
Бранимир Караџић
2020-11-19 06:46:48 -08:00
parent 7ce9fae33a
commit 13aafdcec0

View File

@@ -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);