From 8908ea208bceceb16f39ee6b5be8b28417ad1fff Mon Sep 17 00:00:00 2001 From: moudgils <47460854+moudgils@users.noreply.github.com> Date: Fri, 25 Jun 2021 23:08:51 -0700 Subject: [PATCH] Fix ios gpu crash + misc cleanup (#1603) --- Gems/Atom/RHI/Metal/Code/Source/RHI/ArgumentBuffer.cpp | 9 ++++++--- Gems/Atom/RHI/Metal/Code/Source/RHI/CommandListBase.cpp | 3 ++- .../Metal/Code/Source/RHI/ShaderResourceGroupPool.cpp | 1 - 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/ArgumentBuffer.cpp b/Gems/Atom/RHI/Metal/Code/Source/RHI/ArgumentBuffer.cpp index 4a67f51e58..9606727936 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/ArgumentBuffer.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/ArgumentBuffer.cpp @@ -334,9 +334,8 @@ namespace AZ if(m_argumentBuffer.IsValid()) { m_device->GetArgumentBufferAllocator().DeAllocate(m_argumentBuffer); - } -#endif - + } +#else if(m_argumentBuffer.IsValid()) { m_device->QueueForRelease(m_argumentBuffer); @@ -346,7 +345,11 @@ namespace AZ { m_device->QueueForRelease(m_constantBuffer); } +#endif + m_argumentBuffer = {}; + m_constantBuffer = {}; + [m_argumentEncoder release]; m_argumentEncoder = nil; diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/CommandListBase.cpp b/Gems/Atom/RHI/Metal/Code/Source/RHI/CommandListBase.cpp index 2a082916a0..ccd8dc85af 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/CommandListBase.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/CommandListBase.cpp @@ -78,8 +78,9 @@ namespace AZ id renderEncoder = GetEncoder>(); for (id residentHeap : *m_residentHeaps) { + //MTLRenderStageVertex is not added to this as it was causing an immediate gpu crash on ios (first buffer commit) [renderEncoder useHeap : residentHeap - stages : MTLRenderStageVertex | MTLRenderStageFragment]; + stages : MTLRenderStageFragment]; } break; } diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/ShaderResourceGroupPool.cpp b/Gems/Atom/RHI/Metal/Code/Source/RHI/ShaderResourceGroupPool.cpp index efe127d1b5..ca3bdd974c 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/ShaderResourceGroupPool.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/ShaderResourceGroupPool.cpp @@ -55,7 +55,6 @@ namespace AZ ShaderResourceGroup& group = static_cast(resourceBase); for (size_t i = 0; i < RHI::Limits::Device::FrameCountMax; ++i) { - group.m_compiledArgBuffers[i]->Shutdown(); group.m_compiledArgBuffers[i] = nullptr; } Base::ShutdownResourceInternal(resourceBase);