Unify three types of non-FIFO requests to the GPU thread around Common::Event and Common::Flag.

The only possible functionality change is that s_efbAccessRequested and
s_swapRequested are no longer reset at init and shutdown of the OGL
backend (only; this is the only interaction any files other than
MainBase.cpp have with them).  I am fairly certain this was entirely
vestigial.

Possible performance implications: efbAccessReady now uses an Event
rather than spinning, which might be slightly slower, but considering
the slow loop the flags are being checked in from the GPU thread, I
doubt it's noticeable.

Also, this uses sequentially consistent rather than release/acquire
memory order, which might be slightly slower, especially on ARM...
something to improve in Event/Flag, really.
This commit is contained in:
comex
2014-08-24 19:13:46 -04:00
parent de7294ecc1
commit e31d6feaa2
5 changed files with 38 additions and 60 deletions

View File

@ -1,11 +1,10 @@
#pragma once
#include "Common/CommonTypes.h"
#include "Common/Flag.h"
extern bool s_BackendInitialized;
extern u32 s_efbAccessRequested;
extern volatile u32 s_FifoShuttingDown;
extern volatile u32 s_swapRequested;
extern Common::Flag s_swapRequested;
void VideoFifo_CheckEFBAccess();
void VideoFifo_CheckSwapRequestAt(u32 xfbAddr, u32 fbWidth, u32 fbHeight);