From 668ec0a2d1e010a7e210dc7180bc3ed2251d57ab Mon Sep 17 00:00:00 2001 From: TellowKrinkle Date: Sat, 25 Dec 2021 23:00:33 -0600 Subject: [PATCH] GS:MTL: Fix barriers --- pcsx2/GS/Renderers/Metal/GSDeviceMTL.h | 1 - pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm | 12 ++---------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/pcsx2/GS/Renderers/Metal/GSDeviceMTL.h b/pcsx2/GS/Renderers/Metal/GSDeviceMTL.h index fceb600dd4c1f..7898cffe90862 100644 --- a/pcsx2/GS/Renderers/Metal/GSDeviceMTL.h +++ b/pcsx2/GS/Renderers/Metal/GSDeviceMTL.h @@ -214,7 +214,6 @@ class API_AVAILABLE(macos(10.13)) GSDeviceMTL final : public GSDevice id m_dev; id m_queue; id m_draw_sync_fence; - bool m_wait_on_draw_sync_fence; NSView* m_view; CAMetalLayer* m_layer; id m_shaders; diff --git a/pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm b/pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm index e3d1676535377..233b59a6179bf 100644 --- a/pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm +++ b/pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm @@ -225,7 +225,6 @@ static void GSDeviceMTLCleanup(NSView* view, CAMetalLayer* layer) destinationOffset:buffer.last_upload size:buffer.usage.Pos() - buffer.last_upload]; [enc updateFence:m_draw_sync_fence]; - m_wait_on_draw_sync_fence = true; buffer.last_upload = buffer.usage.Pos(); } @@ -249,11 +248,8 @@ static void GSDeviceMTLCleanup(NSView* view, CAMetalLayer* layer) m_late_texture_upload_encoder = [GetRenderCmdBuf() blitCommandEncoder]; pxAssertRel(m_late_texture_upload_encoder, "Failed to create late texture upload encoder!"); [m_late_texture_upload_encoder setLabel:@"Late Texture Upload"]; - if (m_wait_on_draw_sync_fence) - { - m_wait_on_draw_sync_fence = false; + if (!m_unified_memory) [m_late_texture_upload_encoder waitForFence:m_draw_sync_fence]; - } } return m_late_texture_upload_encoder; } @@ -401,12 +397,9 @@ static void GSDeviceMTLCleanup(NSView* view, CAMetalLayer* layer) EndRenderPass(); m_current_render.encoder = [GetRenderCmdBuf() renderCommandEncoderWithDescriptor:desc]; - if (m_wait_on_draw_sync_fence) - { - m_wait_on_draw_sync_fence = false; + if (!m_unified_memory) [m_current_render.encoder waitForFence:m_draw_sync_fence beforeStages:MTLRenderStageVertex]; - } m_current_render.color_target = color; m_current_render.depth_target = depth; m_current_render.stencil_target = stencil; @@ -719,7 +712,6 @@ static void setFnConstantI(MTLFunctionConstantValues* fc, unsigned int value, GS // Init metal stuff m_queue = [m_dev newCommandQueue]; m_draw_sync_fence = [m_dev newFence]; - m_wait_on_draw_sync_fence = !m_unified_memory; m_shaders = [m_dev newDefaultLibrary]; m_fn_constants = [MTLFunctionConstantValues new];