Ver Fonte

Metal: Add BGFX_CAPS_VERTEX_ID support.

Бранимир Караџић há 5 anos atrás
pai
commit
13aafdcec0
1 ficheiros alterados com 10 adições e 7 exclusões
  1. 10 7
      src/renderer_mtl.mm

+ 10 - 7
src/renderer_mtl.mm

@@ -478,6 +478,7 @@ namespace bgfx { namespace mtl
 			g_caps.supported |= (0
 			g_caps.supported |= (0
 				| BGFX_CAPS_ALPHA_TO_COVERAGE
 				| BGFX_CAPS_ALPHA_TO_COVERAGE
 				| BGFX_CAPS_BLEND_INDEPENDENT
 				| BGFX_CAPS_BLEND_INDEPENDENT
+				| BGFX_CAPS_COMPUTE
 				| BGFX_CAPS_FRAGMENT_DEPTH
 				| BGFX_CAPS_FRAGMENT_DEPTH
 				| BGFX_CAPS_INDEX32
 				| BGFX_CAPS_INDEX32
 				| BGFX_CAPS_INSTANCING
 				| BGFX_CAPS_INSTANCING
@@ -491,7 +492,7 @@ namespace bgfx { namespace mtl
 				| BGFX_CAPS_TEXTURE_READ_BACK
 				| BGFX_CAPS_TEXTURE_READ_BACK
 				| BGFX_CAPS_VERTEX_ATTRIB_HALF
 				| BGFX_CAPS_VERTEX_ATTRIB_HALF
 				| BGFX_CAPS_VERTEX_ATTRIB_UINT10
 				| BGFX_CAPS_VERTEX_ATTRIB_UINT10
-				| BGFX_CAPS_COMPUTE
+				| BGFX_CAPS_VERTEX_ID
 				);
 				);
 
 
 			if (BX_ENABLED(BX_PLATFORM_IOS) )
 			if (BX_ENABLED(BX_PLATFORM_IOS) )
@@ -4551,6 +4552,7 @@ namespace bgfx { namespace mtl
 				if (0 != currentState.m_streamMask)
 				if (0 != currentState.m_streamMask)
 				{
 				{
 					uint32_t numVertices = draw.m_numVertices;
 					uint32_t numVertices = draw.m_numVertices;
+
 					if (UINT32_MAX == numVertices)
 					if (UINT32_MAX == numVertices)
 					{
 					{
 						const VertexBufferMtl& vb = m_vertexBuffers[currentState.m_stream[0].m_handle.idx];
 						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;
 							MTLIndexType indexType = 0 == (ib.m_flags & BGFX_BUFFER_INDEX32) ? MTLIndexTypeUInt16 : MTLIndexTypeUInt32;
 
 
 							numDrawIndirect = UINT16_MAX == draw.m_numIndirect
 							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)
 							for (uint32_t ii = 0; ii < numDrawIndirect; ++ii)
 							{
 							{
@@ -4592,9 +4594,10 @@ namespace bgfx { namespace mtl
 						else
 						else
 						{
 						{
 							numDrawIndirect = UINT16_MAX == draw.m_numIndirect
 							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)
 							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);
 								rce.drawPrimitives(prim.m_type,vb.m_ptr, (draw.m_startIndirect + ii) * BGFX_CONFIG_DRAW_INDIRECT_STRIDE);