|
|
@@ -540,12 +540,12 @@ namespace bgfx { namespace mtl
|
|
|
|| BX_ENABLED(BX_PLATFORM_OSX)
|
|
|
|| (BX_ENABLED(BX_PLATFORM_IOS) && iOSVersionEqualOrGreater("9.0.0") )
|
|
|
;
|
|
|
-
|
|
|
+
|
|
|
m_hasStoreActionStoreAndMultisampleResolve = false
|
|
|
|| (BX_ENABLED(BX_PLATFORM_OSX) && macOSVersionEqualOrGreater(10,12,0))
|
|
|
|| (BX_ENABLED(BX_PLATFORM_IOS) && iOSVersionEqualOrGreater("10.0.0") )
|
|
|
;
|
|
|
-
|
|
|
+
|
|
|
m_macOS11Runtime = true
|
|
|
&& BX_ENABLED(BX_PLATFORM_OSX)
|
|
|
&& macOSVersionEqualOrGreater(10,11,0)
|
|
|
@@ -967,7 +967,7 @@ namespace bgfx { namespace mtl
|
|
|
BX_FREE(g_allocator, m_uniforms[_handle.idx]);
|
|
|
}
|
|
|
|
|
|
- uint32_t size = BX_ALIGN_16(g_uniformTypeSize[_type]*_num);
|
|
|
+ const uint32_t size = bx::alignUp(g_uniformTypeSize[_type]*_num, 16);
|
|
|
void* data = BX_ALLOC(g_allocator, size);
|
|
|
bx::memSet(data, 0, size);
|
|
|
m_uniforms[_handle.idx] = data;
|
|
|
@@ -1159,7 +1159,10 @@ namespace bgfx { namespace mtl
|
|
|
|
|
|
if (vertexUniformBufferSize)
|
|
|
{
|
|
|
- m_uniformBufferVertexOffset = BX_ALIGN_MASK(m_uniformBufferVertexOffset, pso->m_vshConstantBufferAlignmentMask);
|
|
|
+ m_uniformBufferVertexOffset = bx::alignUp(
|
|
|
+ m_uniformBufferVertexOffset
|
|
|
+ , pso->m_vshConstantBufferAlignment
|
|
|
+ );
|
|
|
rce.setVertexBuffer(m_uniformBuffer, m_uniformBufferVertexOffset, 0);
|
|
|
}
|
|
|
|
|
|
@@ -1167,7 +1170,10 @@ namespace bgfx { namespace mtl
|
|
|
|
|
|
if (0 != fragmentUniformBufferSize)
|
|
|
{
|
|
|
- m_uniformBufferFragmentOffset = BX_ALIGN_MASK(m_uniformBufferFragmentOffset, pso->m_fshConstantBufferAlignmentMask);
|
|
|
+ m_uniformBufferFragmentOffset = bx::alignUp(
|
|
|
+ m_uniformBufferFragmentOffset
|
|
|
+ , pso->m_fshConstantBufferAlignment
|
|
|
+ );
|
|
|
rce.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0);
|
|
|
}
|
|
|
|
|
|
@@ -1541,14 +1547,20 @@ namespace bgfx { namespace mtl
|
|
|
|
|
|
if (0 != vertexUniformBufferSize)
|
|
|
{
|
|
|
- m_uniformBufferVertexOffset = BX_ALIGN_MASK(m_uniformBufferVertexOffset, pso->m_vshConstantBufferAlignmentMask);
|
|
|
+ m_uniformBufferVertexOffset = bx::alignUp(
|
|
|
+ m_uniformBufferVertexOffset
|
|
|
+ , pso->m_vshConstantBufferAlignment
|
|
|
+ );
|
|
|
m_renderCommandEncoder.setVertexBuffer(m_uniformBuffer, m_uniformBufferVertexOffset, 0);
|
|
|
}
|
|
|
|
|
|
m_uniformBufferFragmentOffset = m_uniformBufferVertexOffset + vertexUniformBufferSize;
|
|
|
if (fragmentUniformBufferSize)
|
|
|
{
|
|
|
- m_uniformBufferFragmentOffset = BX_ALIGN_MASK(m_uniformBufferFragmentOffset, pso->m_fshConstantBufferAlignmentMask);
|
|
|
+ m_uniformBufferFragmentOffset = bx::alignUp(
|
|
|
+ m_uniformBufferFragmentOffset
|
|
|
+ , pso->m_fshConstantBufferAlignment
|
|
|
+ );
|
|
|
m_renderCommandEncoder.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0);
|
|
|
}
|
|
|
|
|
|
@@ -1802,13 +1814,13 @@ namespace bgfx { namespace mtl
|
|
|
{
|
|
|
if (shaderType == 0)
|
|
|
{
|
|
|
- ps->m_vshConstantBufferSize = (uint32_t)arg.bufferDataSize;
|
|
|
- ps->m_vshConstantBufferAlignmentMask = (uint32_t)arg.bufferAlignment - 1;
|
|
|
+ ps->m_vshConstantBufferSize = uint32_t(arg.bufferDataSize);
|
|
|
+ ps->m_vshConstantBufferAlignment = uint32_t(arg.bufferAlignment);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ps->m_fshConstantBufferSize = (uint32_t)arg.bufferDataSize;
|
|
|
- ps->m_fshConstantBufferAlignmentMask = (uint32_t)arg.bufferAlignment - 1;
|
|
|
+ ps->m_fshConstantBufferSize = uint32_t(arg.bufferDataSize);
|
|
|
+ ps->m_fshConstantBufferAlignment = uint32_t(arg.bufferAlignment);
|
|
|
}
|
|
|
|
|
|
for (MTLStructMember* uniform in arg.bufferStructType.members )
|
|
|
@@ -3081,7 +3093,7 @@ namespace bgfx { namespace mtl
|
|
|
[contentView setLayer:m_metalLayer];
|
|
|
}
|
|
|
};
|
|
|
-
|
|
|
+
|
|
|
if ([NSThread isMainThread])
|
|
|
{
|
|
|
setLayer();
|
|
|
@@ -3090,7 +3102,7 @@ namespace bgfx { namespace mtl
|
|
|
{
|
|
|
bx::Semaphore semaphore;
|
|
|
bx::Semaphore* psemaphore = &semaphore;
|
|
|
-
|
|
|
+
|
|
|
CFRunLoopPerformBlock([[NSRunLoop mainRunLoop] getCFRunLoop],
|
|
|
kCFRunLoopCommonModes,
|
|
|
^{
|
|
|
@@ -4075,7 +4087,10 @@ namespace bgfx { namespace mtl
|
|
|
|
|
|
if (0 != vertexUniformBufferSize)
|
|
|
{
|
|
|
- m_uniformBufferVertexOffset = BX_ALIGN_MASK(m_uniformBufferVertexOffset, currentPso->m_vshConstantBufferAlignmentMask);
|
|
|
+ m_uniformBufferVertexOffset = bx::alignUp(
|
|
|
+ m_uniformBufferVertexOffset
|
|
|
+ , currentPso->m_vshConstantBufferAlignment
|
|
|
+ );
|
|
|
m_computeCommandEncoder.setBuffer(m_uniformBuffer, m_uniformBufferVertexOffset, 0);
|
|
|
}
|
|
|
|
|
|
@@ -4440,14 +4455,20 @@ namespace bgfx { namespace mtl
|
|
|
|
|
|
if (0 != vertexUniformBufferSize)
|
|
|
{
|
|
|
- m_uniformBufferVertexOffset = BX_ALIGN_MASK(m_uniformBufferVertexOffset, currentPso->m_vshConstantBufferAlignmentMask);
|
|
|
+ m_uniformBufferVertexOffset = bx::alignUp(
|
|
|
+ m_uniformBufferVertexOffset
|
|
|
+ , currentPso->m_vshConstantBufferAlignment
|
|
|
+ );
|
|
|
rce.setVertexBuffer(m_uniformBuffer, m_uniformBufferVertexOffset, 0);
|
|
|
}
|
|
|
|
|
|
m_uniformBufferFragmentOffset = m_uniformBufferVertexOffset + vertexUniformBufferSize;
|
|
|
if (0 != fragmentUniformBufferSize)
|
|
|
{
|
|
|
- m_uniformBufferFragmentOffset = BX_ALIGN_MASK(m_uniformBufferFragmentOffset, currentPso->m_fshConstantBufferAlignmentMask);
|
|
|
+ m_uniformBufferFragmentOffset = bx::alignUp(
|
|
|
+ m_uniformBufferFragmentOffset
|
|
|
+ , currentPso->m_fshConstantBufferAlignment
|
|
|
+ );
|
|
|
rce.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0);
|
|
|
}
|
|
|
|