From 172bc6683e66cb5503ac3a4365837adc4ffd7679 Mon Sep 17 00:00:00 2001 From: Skyth <19259897+blueskythlikesclouds@users.noreply.github.com> Date: Tue, 26 Nov 2024 20:04:31 +0300 Subject: [PATCH] Queue unique models for compilation immediately. --- UnleashedRecomp/api/boost/smart_ptr/shared_ptr.h | 8 +++++++- UnleashedRecomp/gpu/video.cpp | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/UnleashedRecomp/api/boost/smart_ptr/shared_ptr.h b/UnleashedRecomp/api/boost/smart_ptr/shared_ptr.h index ecea043a..c1e20849 100644 --- a/UnleashedRecomp/api/boost/smart_ptr/shared_ptr.h +++ b/UnleashedRecomp/api/boost/smart_ptr/shared_ptr.h @@ -69,7 +69,12 @@ namespace boost uint32_t use_count() const { - return use_count_; + return std::byteswap(static_cast(use_count_.value)); + } + + bool unique() const + { + return use_count() == 1; } }; @@ -158,6 +163,7 @@ namespace boost explicit operator bool() const { return px != nullptr; } size_t use_count() const { return pn ? pn->use_count() : 0; } + bool unique() const { return !pn || pn->unique(); } }; using anonymous_shared_ptr = shared_ptr; diff --git a/UnleashedRecomp/gpu/video.cpp b/UnleashedRecomp/gpu/video.cpp index b8bd2b73..db7f4fe2 100644 --- a/UnleashedRecomp/gpu/video.cpp +++ b/UnleashedRecomp/gpu/video.cpp @@ -4668,7 +4668,7 @@ static void ModelConsumerThread() else ready = CheckMadeAll(*reinterpret_cast(pendingModel.get())); - if (ready) + if (ready || pendingModel.unique()) { g_compilingModelQueue.enqueue(std::move(pendingModel)); --g_pendingModelCount;