2017-01-19

PCSX2 Git (2017/01/19)

EmuCR: PCSX2PCSX2 Git (2017/01/19) is compiled. PCSX2 is an open source PlayStation 2 (PS2) emulator for the Microsoft Windows and Linux operating systems. With the most recent versions, many PS2 games are playable (although speed limitations have made play-to-completion tests for many games impractical), and several games are claimed to have full functionality.

PCSX2 Git Changelog:
* Merge branch 'greg/mtvu-mtgs-lockless'
* MTVU/GS: try to relax the readAmount atomic operation
I suspect it to be the same on x86
The real issue is the various atomic in FinishGSPacketMTVU which I'm afraid will create some cpu stall
* MTVU: small thread scheduling improvement
* Use yield to avoid a spin loop during WAIT
* Don't flush the full buffer when we miss space
* MTVU: redo properly atomic management around the MTVU ring buffer
The ring buffer is composed of severals read/write by transaction.
Atomic operations are only required at the start/end of the full
transaction. In the middle, you can use normal variable (optimization
opportunity for the compiler)
Use acquire/release semantics on isBusy and vuCycles to remain 100% safe
(relaxed might be doable but better be safe than sorry)
Use dedicated cache line for atomic variable to avoid any conflict between CPU
* GIF: remove 'done' of the GS_Packet struct
The struct is copied in various ring buffer (hot path)
We only need the return status of the function so use a reference instead of
a state variable
Side note: if we align the struct to 16B maybe the compiler can use SSE to copy it.
Warning: it breaks save state compatibility
* MTVU/MTGS: use a mutex free ring buffer
Most of the time the mutex was likely optimized. Now we have the guarantee that
thread won't block.
* boost ring queue: dedicate cache line for atomic variable
Bad for data cache ! But it might be better for atomic operation.
* boost ring queue: use % to wrap the index
For power of 2, it is replaced with a single and instruction. If it potentially faster
than branch. But it worths a benchmark
* boost ring queue: extend the interface to ease replacement of dequeue class in core

Download: PCSX2 Git (2017/01/19)
Source: Here

0 Comments

Post a Comment