diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-02-19 18:40:37 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-04-22 17:36:16 +0200 |
commit | b7bc3c25496849661846f2fe42f591f2a81fbc87 (patch) | |
tree | 5c65f286d0ac58dfd46a42325a71548f20522f71 /src/video_core/renderer_opengl/gl_fence_manager.cpp | |
parent | BufferCache: Refactor async managing. (diff) | |
download | yuzu-b7bc3c25496849661846f2fe42f591f2a81fbc87.tar yuzu-b7bc3c25496849661846f2fe42f591f2a81fbc87.tar.gz yuzu-b7bc3c25496849661846f2fe42f591f2a81fbc87.tar.bz2 yuzu-b7bc3c25496849661846f2fe42f591f2a81fbc87.tar.lz yuzu-b7bc3c25496849661846f2fe42f591f2a81fbc87.tar.xz yuzu-b7bc3c25496849661846f2fe42f591f2a81fbc87.tar.zst yuzu-b7bc3c25496849661846f2fe42f591f2a81fbc87.zip |
Diffstat (limited to 'src/video_core/renderer_opengl/gl_fence_manager.cpp')
-rw-r--r-- | src/video_core/renderer_opengl/gl_fence_manager.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/video_core/renderer_opengl/gl_fence_manager.cpp b/src/video_core/renderer_opengl/gl_fence_manager.cpp index 69dd3211b..579c03a1e 100644 --- a/src/video_core/renderer_opengl/gl_fence_manager.cpp +++ b/src/video_core/renderer_opengl/gl_fence_manager.cpp @@ -8,17 +8,26 @@ namespace OpenGL { -GLInnerFence::GLInnerFence(GPUVAddr address, u32 payload) - : VideoCommon::FenceBase(address, payload), sync_object{} {} +GLInnerFence::GLInnerFence(u32 payload, bool is_stubbed) + : VideoCommon::FenceBase(payload, is_stubbed), sync_object{} {} + +GLInnerFence::GLInnerFence(GPUVAddr address, u32 payload, bool is_stubbed) + : VideoCommon::FenceBase(address, payload, is_stubbed), sync_object{} {} GLInnerFence::~GLInnerFence() = default; void GLInnerFence::Queue() { + if (is_stubbed) { + return; + } ASSERT(sync_object.handle == 0); sync_object.Create(); } bool GLInnerFence::IsSignaled() const { + if (is_stubbed) { + return true; + } ASSERT(sync_object.handle != 0); GLsizei length; GLint sync_status; @@ -27,6 +36,9 @@ bool GLInnerFence::IsSignaled() const { } void GLInnerFence::Wait() { + if (is_stubbed) { + return; + } ASSERT(sync_object.handle != 0); while (glClientWaitSync(sync_object.handle, 0, 1000) == GL_TIMEOUT_EXPIRED) ; @@ -36,8 +48,12 @@ FenceManagerOpenGL::FenceManagerOpenGL(Core::System& system, VideoCore::Rasteriz TextureCacheOpenGL& texture_cache, OGLBufferCache& buffer_cache) : GenericFenceManager(system, rasterizer, texture_cache, buffer_cache) {} -Fence FenceManagerOpenGL::CreateFence(GPUVAddr addr, u32 value) { - return std::make_shared<GLInnerFence>(addr, value); +Fence FenceManagerOpenGL::CreateFence(u32 value, bool is_stubbed) { + return std::make_shared<GLInnerFence>(value, is_stubbed); +} + +Fence FenceManagerOpenGL::CreateFence(GPUVAddr addr, u32 value, bool is_stubbed) { + return std::make_shared<GLInnerFence>(addr, value, is_stubbed); } void FenceManagerOpenGL::QueueFence(Fence& fence) { |