mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-04 13:07:32 +00:00
Merge pull request #14940 from BunnyFl/fix/prime-shared-mutexes
fix(agc,libkernel): prime the host shared mutexes left unprimed on Windows
This commit is contained in:
5 files changed
+21
-11
No files matched your search
@@ -6,6 +6,7 @@
|
||||
#endif
|
||||
#include <mutex>
|
||||
#include <vulkan/vulkan.h>
|
||||
#include "prx/libc/include/PrimedSharedMutex.hpp"
|
||||
#include <array>
|
||||
#include <atomic>
|
||||
#include <cstdint>
|
||||
@@ -47,7 +48,7 @@ public:
|
||||
SnapshotLock TryLockForSnapshot() const { return SnapshotLock(mutex, std::try_to_lock); }
|
||||
|
||||
private:
|
||||
mutable std::shared_mutex mutex;
|
||||
mutable PrimedSharedMutex mutex;
|
||||
};
|
||||
|
||||
inline void Require(bool condition, const std::string& reason) {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp"
|
||||
#include "prx/libSceAgcDriver/Execution/include/GuestMemory.hpp"
|
||||
#include "prx/libc/include/GuestAllocations.hpp"
|
||||
#include "prx/libc/include/PrimedSharedMutex.hpp"
|
||||
#include "prx/libSceAgcDriver/Graphics/include/BufferPool.hpp"
|
||||
#include "prx/libSceAgcDriver/Graphics/include/FirstSampleCopy.hpp"
|
||||
#include "prx/libSceAgcDriver/Graphics/include/Recorder.hpp"
|
||||
@@ -85,7 +86,7 @@ struct DepthGuard {
|
||||
};
|
||||
|
||||
std::shared_mutex& depthGuardMutex() {
|
||||
static std::shared_mutex mutex;
|
||||
static PrimedSharedMutex mutex;
|
||||
return mutex;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "IntermediateRepresentation/IrMetadata/BufferFormat.hpp"
|
||||
#include "prx/libSceAgcDriver/Execution/include/GuestMemory.hpp"
|
||||
#include "prx/libc/include/GuestAllocations.hpp"
|
||||
#include "prx/libc/include/PrimedSharedMutex.hpp"
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <atomic>
|
||||
@@ -887,14 +888,6 @@ struct GuardedRange {
|
||||
bool fmask = false;
|
||||
};
|
||||
|
||||
class PrimedSharedMutex : public std::shared_mutex {
|
||||
public:
|
||||
PrimedSharedMutex() {
|
||||
lock();
|
||||
unlock();
|
||||
}
|
||||
};
|
||||
|
||||
std::shared_mutex& guardedMutex() {
|
||||
static PrimedSharedMutex mutex;
|
||||
return mutex;
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef CORE_LIBS_PRX_LIBC_INCLUDE_PRIMEDSHAREDMUTEX_HPP
|
||||
#define CORE_LIBS_PRX_LIBC_INCLUDE_PRIMEDSHAREDMUTEX_HPP
|
||||
|
||||
#include <shared_mutex>
|
||||
|
||||
class PrimedSharedMutex : public std::shared_mutex {
|
||||
public:
|
||||
PrimedSharedMutex() {
|
||||
lock();
|
||||
unlock();
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <atomic>
|
||||
#include "SceTypes.hpp"
|
||||
#include "prx/libc/include/General.hpp"
|
||||
#include "prx/libc/include/PrimedSharedMutex.hpp"
|
||||
#include "prx/libkernel/Time/include/Time.hpp"
|
||||
#include "prx/libkernel/Time/include/TimedWait.hpp"
|
||||
#include <chrono>
|
||||
@@ -97,7 +98,7 @@ struct EventFlagHandle {
|
||||
bool opened = false;
|
||||
};
|
||||
|
||||
std::shared_mutex eventFlagRegistryMutex;
|
||||
PrimedSharedMutex eventFlagRegistryMutex;
|
||||
std::unordered_map<KernelEventFlag, std::shared_ptr<EventFlagHandle>> eventFlagRegistry;
|
||||
|
||||
std::shared_ptr<EventFlagHandle> ResolveEventFlag(KernelEventFlag handle) {
|
||||
|
||||
Reference in new issue
Block a user