|
|
@ -40,8 +40,6 @@ static void RunThread(std::stop_token stop_token, Core::System& system,
|
|
|
|
scheduler.Push(submit_list->channel, std::move(submit_list->entries));
|
|
|
|
scheduler.Push(submit_list->channel, std::move(submit_list->entries));
|
|
|
|
} else if (const auto* data = std::get_if<SwapBuffersCommand>(&next.data)) {
|
|
|
|
} else if (const auto* data = std::get_if<SwapBuffersCommand>(&next.data)) {
|
|
|
|
renderer.SwapBuffers(data->framebuffer ? &*data->framebuffer : nullptr);
|
|
|
|
renderer.SwapBuffers(data->framebuffer ? &*data->framebuffer : nullptr);
|
|
|
|
} else if (std::holds_alternative<OnCommandListEndCommand>(next.data)) {
|
|
|
|
|
|
|
|
rasterizer->ReleaseFences();
|
|
|
|
|
|
|
|
} else if (std::holds_alternative<GPUTickCommand>(next.data)) {
|
|
|
|
} else if (std::holds_alternative<GPUTickCommand>(next.data)) {
|
|
|
|
system.GPU().TickWork();
|
|
|
|
system.GPU().TickWork();
|
|
|
|
} else if (const auto* flush = std::get_if<FlushRegionCommand>(&next.data)) {
|
|
|
|
} else if (const auto* flush = std::get_if<FlushRegionCommand>(&next.data)) {
|
|
|
@ -110,10 +108,6 @@ void ThreadManager::FlushAndInvalidateRegion(VAddr addr, u64 size) {
|
|
|
|
rasterizer->OnCPUWrite(addr, size);
|
|
|
|
rasterizer->OnCPUWrite(addr, size);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ThreadManager::OnCommandListEnd() {
|
|
|
|
|
|
|
|
PushCommand(OnCommandListEndCommand());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u64 ThreadManager::PushCommand(CommandData&& command_data, bool block) {
|
|
|
|
u64 ThreadManager::PushCommand(CommandData&& command_data, bool block) {
|
|
|
|
if (!is_async) {
|
|
|
|
if (!is_async) {
|
|
|
|
// In synchronous GPU mode, block the caller until the command has executed
|
|
|
|
// In synchronous GPU mode, block the caller until the command has executed
|
|
|
|