mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2025-06-14 06:47:57 -05:00
Kernel: Convert Event to not use Handles
This commit is contained in:
@ -22,9 +22,12 @@ GraphicsDebugger g_debugger;
|
||||
|
||||
namespace GSP_GPU {
|
||||
|
||||
Handle g_interrupt_event = 0; ///< Handle to event triggered when GSP interrupt has been signalled
|
||||
Kernel::SharedPtr<Kernel::SharedMemory> g_shared_memory; ///< GSP shared memoryings
|
||||
u32 g_thread_id = 1; ///< Thread index into interrupt relay queue, 1 is arbitrary
|
||||
/// Event triggered when GSP interrupt has been signalled
|
||||
Kernel::SharedPtr<Kernel::Event> g_interrupt_event;
|
||||
/// GSP shared memoryings
|
||||
Kernel::SharedPtr<Kernel::SharedMemory> g_shared_memory;
|
||||
/// Thread index into interrupt relay queue, 1 is arbitrary
|
||||
u32 g_thread_id = 1;
|
||||
|
||||
/// Gets a pointer to a thread command buffer in GSP shared memory
|
||||
static inline u8* GetCommandBuffer(u32 thread_id) {
|
||||
@ -181,10 +184,10 @@ static void FlushDataCache(Service::Interface* self) {
|
||||
static void RegisterInterruptRelayQueue(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
u32 flags = cmd_buff[1];
|
||||
g_interrupt_event = cmd_buff[3];
|
||||
g_shared_memory = Kernel::SharedMemory::Create("GSPSharedMem").MoveFrom();
|
||||
|
||||
_assert_msg_(GSP, (g_interrupt_event != 0), "handle is not valid!");
|
||||
g_interrupt_event = Kernel::g_handle_table.Get<Kernel::Event>(cmd_buff[3]);
|
||||
_assert_msg_(GSP, (g_interrupt_event != nullptr), "handle is not valid!");
|
||||
g_shared_memory = Kernel::SharedMemory::Create("GSPSharedMem").MoveFrom();
|
||||
|
||||
Handle shmem_handle = Kernel::g_handle_table.Create(g_shared_memory).MoveFrom();
|
||||
|
||||
@ -192,7 +195,7 @@ static void RegisterInterruptRelayQueue(Service::Interface* self) {
|
||||
cmd_buff[2] = g_thread_id++; // Thread ID
|
||||
cmd_buff[4] = shmem_handle; // GSP shared memory
|
||||
|
||||
Kernel::SignalEvent(g_interrupt_event); // TODO(bunnei): Is this correct?
|
||||
g_interrupt_event->Signal(); // TODO(bunnei): Is this correct?
|
||||
}
|
||||
|
||||
/**
|
||||
@ -234,7 +237,7 @@ void SignalInterrupt(InterruptId interrupt_id) {
|
||||
info->is_dirty = false;
|
||||
}
|
||||
}
|
||||
Kernel::SignalEvent(g_interrupt_event);
|
||||
g_interrupt_event->Signal();
|
||||
}
|
||||
|
||||
/// Executes the next GSP command
|
||||
|
Reference in New Issue
Block a user