Fifo.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright 2008 Dolphin Emulator Project
  2. // Licensed under GPLv2+
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include "Common/CommonTypes.h"
  6. #include "VideoCommon/VideoBackendBase.h"
  7. class PointerWrap;
  8. #define FIFO_SIZE (2*1024*1024)
  9. extern bool g_bSkipCurrentFrame;
  10. // This could be in SCoreStartupParameter, but it depends on multiple settings
  11. // and can change at runtime.
  12. extern bool g_use_deterministic_gpu_thread;
  13. extern std::atomic<u8*> g_video_buffer_write_ptr_xthread;
  14. void Fifo_Init();
  15. void Fifo_Shutdown();
  16. void Fifo_DoState(PointerWrap &f);
  17. void Fifo_PauseAndLock(bool doLock, bool unpauseOnUnlock);
  18. void Fifo_UpdateWantDeterminism(bool want);
  19. // Used for diagnostics.
  20. enum SyncGPUReason
  21. {
  22. SYNC_GPU_OTHER,
  23. SYNC_GPU_WRAPAROUND,
  24. SYNC_GPU_EFB_POKE,
  25. SYNC_GPU_PERFQUERY,
  26. SYNC_GPU_BBOX,
  27. SYNC_GPU_SWAP,
  28. SYNC_GPU_AUX_SPACE,
  29. };
  30. // In g_use_deterministic_gpu_thread mode, waits for the GPU to be done with pending work.
  31. void SyncGPU(SyncGPUReason reason, bool may_move_read_ptr = true);
  32. void PushFifoAuxBuffer(void* ptr, size_t size);
  33. void* PopFifoAuxBuffer(size_t size);
  34. void FlushGpu();
  35. void RunGpu();
  36. void GpuMaySleep();
  37. void RunGpuLoop();
  38. void ExitGpuLoop();
  39. void EmulatorState(bool running);
  40. bool AtBreakpoint();
  41. void ResetVideoBuffer();
  42. void Fifo_SetRendering(bool bEnabled);
  43. int Fifo_Update(int ticks);