Ryujinx/Ryujinx.Graphics.Gpu/Engine
riperiperi c52158b733
Add timestamp to 16-byte/4-word semaphore releases. (#3049)
* Add timestamp to 16-byte semaphore releases.

BOTW was reading a ulong 8 bytes after a semaphore return. Turns out this is the timestamp it was trying to do performance calculation with, so I've made it write when necessary.

This mode was also added to the DMA semaphore I added recently, as it is required by a few games. (i think quake?)

The timestamp code has been moved to GPU context. Check other games with an unusually low framerate cap or dynamic resolution to see if they have improved.

* Cast dma semaphore payload to ulong to fill the space

* Write timestamp first

Might be just worrying too much, but we don't want the applcation reading timestamp if it sees the payload before timestamp is written.
2022-01-27 22:50:32 +01:00
..
Compute Initial tessellation shader support (#2534) 2021-10-18 18:38:04 -03:00
Dma Add timestamp to 16-byte/4-word semaphore releases. (#3049) 2022-01-27 22:50:32 +01:00
GPFifo Add timestamp to 16-byte/4-word semaphore releases. (#3049) 2022-01-27 22:50:32 +01:00
InlineToMemory Fix I2M texture copies when line length is not a multiple of 4 (#2938) 2021-12-26 12:39:07 -03:00
MME Handle indirect draw counts with non-zero draw starts properly (#2593) 2021-08-29 16:52:38 -03:00
Threed Add timestamp to 16-byte/4-word semaphore releases. (#3049) 2022-01-27 22:50:32 +01:00
Twod Don't force scaling on 2D copy sources (#2701) 2021-10-12 23:12:17 +02:00
Types Separate GPU engines (part 2/2) (#2440) 2021-07-11 17:20:40 -03:00
ConditionalRenderEnabled.cs Separate GPU engines (part 2/2) (#2440) 2021-07-11 17:20:40 -03:00
DeviceStateWithShadow.cs Separate GPU engines (part 2/2) (#2440) 2021-07-11 17:20:40 -03:00
MmeShadowScratch.cs Separate GPU engines (part 2/2) (#2440) 2021-07-11 17:20:40 -03:00
SetMmeShadowRamControlMode.cs Separate GPU engines (part 2/2) (#2440) 2021-07-11 17:20:40 -03:00
ShaderTexture.cs Fix image binding format (#1625) 2020-10-20 19:03:20 -03:00