mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-06 15:01:18 +12:00
only set buffer offset if needed
This commit is contained in:
parent
aa81070e87
commit
f03c0a2769
1 changed files with 22 additions and 2 deletions
|
@ -1318,7 +1318,27 @@ void MetalRenderer::SetBuffer(MTL::RenderCommandEncoder* renderCommandEncoder, M
|
|||
if (buffer == boundBuffer.m_buffer && offset == boundBuffer.m_offset)
|
||||
return;
|
||||
|
||||
// TODO: only set the offset if only offset changed
|
||||
if (buffer == boundBuffer.m_buffer)
|
||||
{
|
||||
// Just update the offset
|
||||
boundBuffer.m_offset = offset;
|
||||
|
||||
switch (shaderType)
|
||||
{
|
||||
case METAL_SHADER_TYPE_VERTEX:
|
||||
renderCommandEncoder->setVertexBufferOffset(offset, index);
|
||||
break;
|
||||
case METAL_SHADER_TYPE_OBJECT:
|
||||
renderCommandEncoder->setObjectBufferOffset(offset, index);
|
||||
break;
|
||||
case METAL_SHADER_TYPE_MESH:
|
||||
renderCommandEncoder->setMeshBufferOffset(offset, index);
|
||||
break;
|
||||
case METAL_SHADER_TYPE_FRAGMENT:
|
||||
renderCommandEncoder->setFragmentBufferOffset(offset, index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
boundBuffer = {buffer, offset};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue