Alternative mutex

This commit is contained in:
chss95cs@gmail.com
2022-08-14 08:59:11 -07:00
parent 6bc3191b97
commit 08f7a28920
13 changed files with 152 additions and 54 deletions

View File

@@ -91,7 +91,7 @@ int XmaContext::Setup(uint32_t id, Memory* memory, uint32_t guest_ptr) {
}
bool XmaContext::Work() {
std::lock_guard<std::mutex> lock(lock_);
std::lock_guard<xe_mutex> lock(lock_);
if (!is_allocated() || !is_enabled()) {
return false;
}
@@ -106,7 +106,7 @@ bool XmaContext::Work() {
}
void XmaContext::Enable() {
std::lock_guard<std::mutex> lock(lock_);
std::lock_guard<xe_mutex> lock(lock_);
auto context_ptr = memory()->TranslateVirtual(guest_ptr());
XMA_CONTEXT_DATA data(context_ptr);
@@ -134,7 +134,7 @@ bool XmaContext::Block(bool poll) {
}
void XmaContext::Clear() {
std::lock_guard<std::mutex> lock(lock_);
std::lock_guard<xe_mutex> lock(lock_);
XELOGAPU("XmaContext: reset context {}", id());
auto context_ptr = memory()->TranslateVirtual(guest_ptr());
@@ -151,14 +151,14 @@ void XmaContext::Clear() {
}
void XmaContext::Disable() {
std::lock_guard<std::mutex> lock(lock_);
std::lock_guard<xe_mutex> lock(lock_);
XELOGAPU("XmaContext: disabling context {}", id());
set_is_enabled(false);
}
void XmaContext::Release() {
// Lock it in case the decoder thread is working on it now.
std::lock_guard<std::mutex> lock(lock_);
std::lock_guard<xe_mutex> lock(lock_);
assert_true(is_allocated_ == true);
set_is_allocated(false);

View File

@@ -200,7 +200,7 @@ class XmaContext {
uint32_t id_ = 0;
uint32_t guest_ptr_ = 0;
std::mutex lock_;
xe_mutex lock_;
bool is_allocated_ = false;
bool is_enabled_ = false;
// bool is_dirty_ = true;