mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-06 06:51:18 +12:00
latte: rename metal specific options
This commit is contained in:
parent
feba1aa7ba
commit
4311a41f34
11 changed files with 57 additions and 53 deletions
|
@ -36,9 +36,9 @@ void MetalMemoryManager::InitBufferCache(size_t size)
|
|||
{
|
||||
cemu_assert_debug(!m_bufferCache);
|
||||
|
||||
m_bufferCacheMode = g_current_game_profile->GetBufferCacheMode();
|
||||
m_metalBufferCacheMode = g_current_game_profile->GetBufferCacheMode();
|
||||
|
||||
if (m_bufferCacheMode == BufferCacheMode::Auto)
|
||||
if (m_metalBufferCacheMode == MetalBufferCacheMode::Auto)
|
||||
{
|
||||
// TODO: do this for all unified memory systems?
|
||||
if (m_mtlr->IsAppleGPU())
|
||||
|
@ -50,21 +50,21 @@ void MetalMemoryManager::InitBufferCache(size_t size)
|
|||
case 0x0005000010143500: // USA
|
||||
case 0x0005000010143400: // JPN
|
||||
// TODO: use host instead?
|
||||
m_bufferCacheMode = BufferCacheMode::DeviceShared;
|
||||
m_metalBufferCacheMode = MetalBufferCacheMode::DeviceShared;
|
||||
break;
|
||||
default:
|
||||
m_bufferCacheMode = BufferCacheMode::DevicePrivate;
|
||||
m_metalBufferCacheMode = MetalBufferCacheMode::DevicePrivate;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_bufferCacheMode = BufferCacheMode::DevicePrivate;
|
||||
m_metalBufferCacheMode = MetalBufferCacheMode::DevicePrivate;
|
||||
}
|
||||
}
|
||||
|
||||
// First, try to import the host memory as a buffer
|
||||
if (m_bufferCacheMode == BufferCacheMode::Host)
|
||||
if (m_metalBufferCacheMode == MetalBufferCacheMode::Host)
|
||||
{
|
||||
if (m_mtlr->HasUnifiedMemory())
|
||||
{
|
||||
|
@ -74,18 +74,18 @@ void MetalMemoryManager::InitBufferCache(size_t size)
|
|||
if (!m_bufferCache)
|
||||
{
|
||||
cemuLog_log(LogType::Force, "Failed to import host memory as a buffer, using device shared mode instead");
|
||||
m_bufferCacheMode = BufferCacheMode::DeviceShared;
|
||||
m_metalBufferCacheMode = MetalBufferCacheMode::DeviceShared;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cemuLog_log(LogType::Force, "Host buffer cache mode is only available on unified memory systems, using device shared mode instead");
|
||||
m_bufferCacheMode = BufferCacheMode::DeviceShared;
|
||||
m_metalBufferCacheMode = MetalBufferCacheMode::DeviceShared;
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_bufferCache)
|
||||
m_bufferCache = m_mtlr->GetDevice()->newBuffer(size, (m_bufferCacheMode == BufferCacheMode::DevicePrivate ? MTL::ResourceStorageModePrivate : MTL::ResourceStorageModeShared));
|
||||
m_bufferCache = m_mtlr->GetDevice()->newBuffer(size, (m_metalBufferCacheMode == MetalBufferCacheMode::DevicePrivate ? MTL::ResourceStorageModePrivate : MTL::ResourceStorageModeShared));
|
||||
|
||||
#ifdef CEMU_DEBUG_ASSERT
|
||||
m_bufferCache->setLabel(GetLabel("Buffer cache", m_bufferCache));
|
||||
|
@ -94,11 +94,11 @@ void MetalMemoryManager::InitBufferCache(size_t size)
|
|||
|
||||
void MetalMemoryManager::UploadToBufferCache(const void* data, size_t offset, size_t size)
|
||||
{
|
||||
cemu_assert_debug(m_bufferCacheMode != BufferCacheMode::Host);
|
||||
cemu_assert_debug(m_metalBufferCacheMode != MetalBufferCacheMode::Host);
|
||||
cemu_assert_debug(m_bufferCache);
|
||||
cemu_assert_debug((offset + size) <= m_bufferCache->length());
|
||||
|
||||
if (m_bufferCacheMode == BufferCacheMode::DevicePrivate)
|
||||
if (m_metalBufferCacheMode == MetalBufferCacheMode::DevicePrivate)
|
||||
{
|
||||
auto blitCommandEncoder = m_mtlr->GetBlitCommandEncoder();
|
||||
|
||||
|
@ -118,10 +118,10 @@ void MetalMemoryManager::UploadToBufferCache(const void* data, size_t offset, si
|
|||
|
||||
void MetalMemoryManager::CopyBufferCache(size_t srcOffset, size_t dstOffset, size_t size)
|
||||
{
|
||||
cemu_assert_debug(m_bufferCacheMode != BufferCacheMode::Host);
|
||||
cemu_assert_debug(m_metalBufferCacheMode != MetalBufferCacheMode::Host);
|
||||
cemu_assert_debug(m_bufferCache);
|
||||
|
||||
if (m_bufferCacheMode == BufferCacheMode::DevicePrivate)
|
||||
if (m_metalBufferCacheMode == MetalBufferCacheMode::DevicePrivate)
|
||||
m_mtlr->CopyBufferToBuffer(m_bufferCache, srcOffset, m_bufferCache, dstOffset, size, ALL_MTL_RENDER_STAGES, ALL_MTL_RENDER_STAGES);
|
||||
else
|
||||
memcpy((uint8*)m_bufferCache->contents() + dstOffset, (uint8*)m_bufferCache->contents() + srcOffset, size);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue