2015-05-24 06:55:12 +02:00
|
|
|
// Copyright 2008 Dolphin Emulator Project
|
2015-05-18 01:08:10 +02:00
|
|
|
// Licensed under GPLv2+
|
2013-04-17 23:09:55 -04:00
|
|
|
// Refer to the license.txt file included.
|
2008-12-08 04:46:09 +00:00
|
|
|
|
2014-02-10 13:54:46 -05:00
|
|
|
#pragma once
|
2008-12-08 04:46:09 +00:00
|
|
|
|
2016-01-17 16:54:31 -05:00
|
|
|
#include <cstddef>
|
2014-09-07 20:06:58 -05:00
|
|
|
#include "Common/CommonTypes.h"
|
2009-12-16 17:05:30 +00:00
|
|
|
|
|
|
|
|
class PointerWrap;
|
2008-12-08 04:46:09 +00:00
|
|
|
|
2016-01-12 22:44:58 +01:00
|
|
|
namespace Fifo
|
|
|
|
|
{
|
|
|
|
|
void Init();
|
|
|
|
|
void Shutdown();
|
2016-06-24 10:43:46 +02:00
|
|
|
void Prepare(); // Must be called from the CPU thread.
|
|
|
|
|
void DoState(PointerWrap& f);
|
2016-01-12 22:44:58 +01:00
|
|
|
void PauseAndLock(bool doLock, bool unpauseOnUnlock);
|
|
|
|
|
void UpdateWantDeterminism(bool want);
|
2016-01-23 23:31:13 -05:00
|
|
|
bool UseDeterministicGPUThread();
|
2011-02-17 04:25:21 +00:00
|
|
|
|
2014-08-27 22:56:19 -04:00
|
|
|
// Used for diagnostics.
|
2016-08-18 22:35:58 -04:00
|
|
|
enum class SyncGPUReason
|
2014-10-06 20:04:57 -04:00
|
|
|
{
|
2016-08-18 22:35:58 -04:00
|
|
|
Other,
|
|
|
|
|
Wraparound,
|
|
|
|
|
EFBPoke,
|
|
|
|
|
PerfQuery,
|
|
|
|
|
BBox,
|
|
|
|
|
Swap,
|
|
|
|
|
AuxSpace,
|
2014-08-27 22:56:19 -04:00
|
|
|
};
|
2016-01-23 23:31:13 -05:00
|
|
|
// In deterministic GPU thread mode this waits for the GPU to be done with pending work.
|
2014-08-27 22:56:19 -04:00
|
|
|
void SyncGPU(SyncGPUReason reason, bool may_move_read_ptr = true);
|
|
|
|
|
|
2017-03-26 20:38:19 -04:00
|
|
|
void PushFifoAuxBuffer(const void* ptr, size_t size);
|
2014-08-27 22:56:19 -04:00
|
|
|
void* PopFifoAuxBuffer(size_t size);
|
|
|
|
|
|
2015-03-05 21:14:46 +01:00
|
|
|
void FlushGpu();
|
2011-02-17 04:25:21 +00:00
|
|
|
void RunGpu();
|
2015-05-27 20:53:09 +02:00
|
|
|
void GpuMaySleep();
|
2011-02-17 04:25:21 +00:00
|
|
|
void RunGpuLoop();
|
|
|
|
|
void ExitGpuLoop();
|
|
|
|
|
void EmulatorState(bool running);
|
|
|
|
|
bool AtBreakpoint();
|
2011-01-29 21:26:46 +00:00
|
|
|
void ResetVideoBuffer();
|
2016-01-12 22:44:58 +01:00
|
|
|
|
2016-06-24 10:43:46 +02:00
|
|
|
} // namespace Fifo
|