diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2019-09-26 01:43:23 +0200 |
---|---|---|
committer | FernandoS27 <fsahmkow27@gmail.com> | 2019-10-05 01:59:48 +0200 |
commit | 5b5e60ffeca1a718cd980e74f0528d6ab91788cf (patch) | |
tree | 56073a1d11122b8253a69f8e908f6f44687cc3d3 /src/video_core/gpu.cpp | |
parent | Nvdrv: Correct Async regression and avoid signaling empty buffer vsyncs (diff) | |
download | yuzu-5b5e60ffeca1a718cd980e74f0528d6ab91788cf.tar yuzu-5b5e60ffeca1a718cd980e74f0528d6ab91788cf.tar.gz yuzu-5b5e60ffeca1a718cd980e74f0528d6ab91788cf.tar.bz2 yuzu-5b5e60ffeca1a718cd980e74f0528d6ab91788cf.tar.lz yuzu-5b5e60ffeca1a718cd980e74f0528d6ab91788cf.tar.xz yuzu-5b5e60ffeca1a718cd980e74f0528d6ab91788cf.tar.zst yuzu-5b5e60ffeca1a718cd980e74f0528d6ab91788cf.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/gpu.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp index 76cfe8107..d94be9c9d 100644 --- a/src/video_core/gpu.cpp +++ b/src/video_core/gpu.cpp @@ -3,6 +3,7 @@ // Refer to the license.txt file included. #include "common/assert.h" +#include "common/microprofile.h" #include "core/core.h" #include "core/core_timing.h" #include "core/memory.h" @@ -17,6 +18,8 @@ namespace Tegra { +MICROPROFILE_DEFINE(GPU_wait, "GPU", "Wait for the GPU", MP_RGB(128, 128, 192)); + GPU::GPU(Core::System& system, VideoCore::RendererBase& renderer, bool is_async) : system{system}, renderer{renderer}, is_async{is_async} { auto& rasterizer{renderer.Rasterizer()}; @@ -63,6 +66,16 @@ const DmaPusher& GPU::DmaPusher() const { return *dma_pusher; } +void GPU::WaitFence(u32 syncpoint_id, u32 value) const { + // Synced GPU, is always in sync + if (!is_async) { + return; + } + MICROPROFILE_SCOPE(GPU_wait); + while (syncpoints[syncpoint_id].load() < value) { + } +} + void GPU::IncrementSyncPoint(const u32 syncpoint_id) { syncpoints[syncpoint_id]++; std::lock_guard lock{sync_mutex}; |