summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_fence_manager.cpp
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2020-02-19 18:40:37 +0100
committerFernando Sahmkow <fsahmkow27@gmail.com>2020-04-22 17:36:16 +0200
commitb7bc3c25496849661846f2fe42f591f2a81fbc87 (patch)
tree5c65f286d0ac58dfd46a42325a71548f20522f71 /src/video_core/renderer_opengl/gl_fence_manager.cpp
parentBufferCache: Refactor async managing. (diff)
downloadyuzu-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.cpp24
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) {