dolphin/Source
Stenzek 378b605669 BPStructs: Gracefully handle out-of-range EFB copies
Since the copy X and Y coordinates/sizes are 10-bit, the game can configure a
copy region up to 1024x1024. Hardware tests have found that the number of bytes
written does not depend on the configured stride, instead it is based on the
size registers, writing beyond the length  of a single row. The data written
for the pixels which lie outside the EFB bounds does not wrap around instead
returning different colors based on the pixel format of the EFB.

This suggests it's not based on coordinates, but instead on memory addresses.
The effect of a within-bounds size but out-of-bounds offset
(e.g. offset 320,0, size 640,480) are the same.

As it would be difficult to emulate the exact behavior of out-of-bounds reads,
instead of writing the junk data, we don't write anything to RAM at all for
over-sized copies, and clamp to the EFB borders for over-offset copies.
2019-03-31 22:05:53 +10:00
..
Android Core/Host: Allow frontends to block inputs 2019-03-21 13:16:21 +01:00
Core BPStructs: Gracefully handle out-of-range EFB copies 2019-03-31 22:05:53 +10:00
DSPSpy
DSPTool Update to Visual Studio's default Windows SDK 2018-10-20 00:53:08 +01:00
PCH Update to Visual Studio's default Windows SDK 2018-10-20 00:53:08 +01:00
UnitTests Core/Host: Allow frontends to block inputs 2019-03-21 13:16:21 +01:00
VSProps Added FreeSurround to Externals 2019-02-13 22:52:39 -02:00
.clang-format clang-format: Split C++/ObjC sections 2018-10-06 11:30:45 +10:00
CMakeLists.txt cmake: Conditionally build the unit tests. 2018-12-08 14:07:06 -08:00
dolphin-emu.sln Add D3DCommon (shared code between D3D11 and D3D12) 2019-03-29 19:52:38 +10:00