early-access version 3185
This commit is contained in:
parent
aa33d0e336
commit
b8bb0894f1
3 changed files with 48 additions and 38 deletions
|
@ -1,7 +1,7 @@
|
||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 3184.
|
This is the source code for early-access 3185.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
|
|
@ -36,14 +36,14 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
KernelCore& kernel;
|
KernelCore& kernel;
|
||||||
|
|
||||||
std::jthread m_host_thread;
|
|
||||||
std::mutex m_session_mutex;
|
|
||||||
std::map<KServerSession*, std::shared_ptr<SessionRequestManager>> m_sessions;
|
|
||||||
KEvent* m_wakeup_event;
|
|
||||||
KThread* m_thread;
|
|
||||||
std::atomic<bool> m_shutdown_requested;
|
|
||||||
const std::string m_service_name;
|
const std::string m_service_name;
|
||||||
|
|
||||||
|
std::jthread m_host_thread{};
|
||||||
|
std::mutex m_session_mutex{};
|
||||||
|
std::map<KServerSession*, std::shared_ptr<SessionRequestManager>> m_sessions{};
|
||||||
|
KEvent* m_wakeup_event{};
|
||||||
|
KThread* m_thread{};
|
||||||
|
std::atomic<bool> m_shutdown_requested{};
|
||||||
};
|
};
|
||||||
|
|
||||||
void ServiceThread::Impl::WaitAndProcessImpl() {
|
void ServiceThread::Impl::WaitAndProcessImpl() {
|
||||||
|
@ -183,7 +183,7 @@ ServiceThread::Impl::~Impl() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ServiceThread::Impl::Impl(KernelCore& kernel_, const std::string& service_name)
|
ServiceThread::Impl::Impl(KernelCore& kernel_, const std::string& service_name)
|
||||||
: kernel{kernel_}, m_shutdown_requested{false}, m_service_name{service_name} {
|
: kernel{kernel_}, m_service_name{service_name} {
|
||||||
// Initialize event.
|
// Initialize event.
|
||||||
m_wakeup_event = KEvent::Create(kernel);
|
m_wakeup_event = KEvent::Create(kernel);
|
||||||
m_wakeup_event->Initialize(nullptr);
|
m_wakeup_event->Initialize(nullptr);
|
||||||
|
|
|
@ -493,6 +493,14 @@ void Maxwell3D::ProcessQueryGet() {
|
||||||
|
|
||||||
void Maxwell3D::ProcessQueryCondition() {
|
void Maxwell3D::ProcessQueryCondition() {
|
||||||
const GPUVAddr condition_address{regs.render_enable.Address()};
|
const GPUVAddr condition_address{regs.render_enable.Address()};
|
||||||
|
switch (regs.render_enable_override) {
|
||||||
|
case Regs::RenderEnable::Override::AlwaysRender:
|
||||||
|
execute_on = true;
|
||||||
|
break;
|
||||||
|
case Regs::RenderEnable::Override::NeverRender:
|
||||||
|
execute_on = false;
|
||||||
|
break;
|
||||||
|
case Regs::RenderEnable::Override::UseRenderEnable:
|
||||||
switch (regs.render_enable.mode) {
|
switch (regs.render_enable.mode) {
|
||||||
case Regs::RenderEnable::Mode::True: {
|
case Regs::RenderEnable::Mode::True: {
|
||||||
execute_on = true;
|
execute_on = true;
|
||||||
|
@ -511,15 +519,15 @@ void Maxwell3D::ProcessQueryCondition() {
|
||||||
case Regs::RenderEnable::Mode::IfEqual: {
|
case Regs::RenderEnable::Mode::IfEqual: {
|
||||||
Regs::ReportSemaphore::Compare cmp;
|
Regs::ReportSemaphore::Compare cmp;
|
||||||
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
|
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
|
||||||
execute_on =
|
execute_on = cmp.initial_sequence == cmp.current_sequence &&
|
||||||
cmp.initial_sequence == cmp.current_sequence && cmp.initial_mode == cmp.current_mode;
|
cmp.initial_mode == cmp.current_mode;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Regs::RenderEnable::Mode::IfNotEqual: {
|
case Regs::RenderEnable::Mode::IfNotEqual: {
|
||||||
Regs::ReportSemaphore::Compare cmp;
|
Regs::ReportSemaphore::Compare cmp;
|
||||||
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
|
memory_manager.ReadBlock(condition_address, &cmp, sizeof(cmp));
|
||||||
execute_on =
|
execute_on = cmp.initial_sequence != cmp.current_sequence ||
|
||||||
cmp.initial_sequence != cmp.current_sequence || cmp.initial_mode != cmp.current_mode;
|
cmp.initial_mode != cmp.current_mode;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
@ -528,6 +536,8 @@ void Maxwell3D::ProcessQueryCondition() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Maxwell3D::ProcessCounterReset() {
|
void Maxwell3D::ProcessCounterReset() {
|
||||||
|
|
Loading…
Reference in a new issue