diff --git a/src/renderer_mtl.cpp b/src/renderer_mtl.cpp index 97fb59cfb..5112c80df 100644 --- a/src/renderer_mtl.cpp +++ b/src/renderer_mtl.cpp @@ -1358,11 +1358,12 @@ static_assert(BX_COUNTOF(s_accessNames) == Access::Count, "Invalid s_accessNames { const TextureMtl& texture = m_textures[_handle.idx]; -#if BX_PLATFORM_OSX MTL::BlitCommandEncoder* bce = s_renderMtl->getBlitCommandEncoder(); +#if BX_PLATFORM_OSX bce->synchronizeTexture(texture.m_ptr, _layer, _mip); - endEncoding(); #endif // BX_PLATFORM_OSX + BX_UNUSED(bce); + endEncoding(); m_cmd.kick(false, true); m_commandBuffer = NULL; @@ -1496,12 +1497,12 @@ static_assert(BX_COUNTOF(s_accessNames) == Access::Count, "Invalid s_accessNames return; } -#if BX_PLATFORM_OSX m_blitCommandEncoder = getBlitCommandEncoder(); +#if BX_PLATFORM_OSX m_blitCommandEncoder->synchronizeResource(m_screenshotTarget); +#endif // BX_PLATFORM_OSX m_blitCommandEncoder->endEncoding(); m_blitCommandEncoder = NULL; -#endif // BX_PLATFORM_OSX m_cmd.kick(false, true); m_commandBuffer = 0; @@ -2879,6 +2880,7 @@ static_assert(BX_COUNTOF(s_accessNames) == Access::Count, "Invalid s_accessNames } } + bool usedFallbackAttrib = false; for (uint32_t ii = 0; Attrib::Count != program.m_used[ii]; ++ii) { const Attrib::Enum attr = Attrib::Enum(program.m_used[ii]); @@ -2889,9 +2891,20 @@ static_assert(BX_COUNTOF(s_accessNames) == Access::Count, "Invalid s_accessNames vertexDesc->attributes()->object(loc)->setFormat(MTL::VertexFormatUChar2); vertexDesc->attributes()->object(loc)->setBufferIndex(1); vertexDesc->attributes()->object(loc)->setOffset(0); + usedFallbackAttrib = true; } } + MTL::VertexBufferLayoutDescriptor* vbld = vertexDesc->layouts()->object(1); + + if (usedFallbackAttrib + && 0 == vbld->stride() ) + { + vbld->setStride(4); + vbld->setStepFunction(MTL::VertexStepFunctionConstant); + vbld->setStepRate(0); + } + if (0 < _numInstanceData) { uint32_t numAttribs = 0; @@ -4960,7 +4973,7 @@ static_assert(BX_COUNTOF(s_accessNames) == Access::Count, "Invalid s_accessNames if (m_blitCommandEncoder) { m_blitCommandEncoder->endEncoding(); - m_blitCommandEncoder = 0; + m_blitCommandEncoder = NULL; } updateResolution(_render->m_resolution);