Commit Graph

589 Commits

Author SHA1 Message Date
refractionpcsx2
448a279cd4 GS/HW: Further improve clear behaviour 2026-01-26 03:19:49 +01:00
refractionpcsx2
70e13adfde GS/TC: Improve wrapping behaviour for inside target lookups 2026-01-26 03:19:49 +01:00
refractionpcsx2
73a09ffe6c GS/HW: Improve channel shuffle detection and use on 24bit sources 2026-01-17 18:18:00 +01:00
refractionpcsx2
4e5d7bd407 GS/TC: Delete empty target after height adjust 2026-01-17 16:58:37 +01:00
refractionpcsx2
efb66c1d37 GS/TC: Small optimization to local memory invalidation 2026-01-17 16:32:10 +01:00
refractionpcsx2
238b29836e GS/TC: Only bilinearly scale render target if preserve_scale is not set 2026-01-17 15:53:08 +01:00
refractionpcsx2
58cbb61aac GS/TC: Only bilinear filter depth scales 2026-01-17 15:53:08 +01:00
refractionpcsx2
2c7a168029 GS/HW: Properly scale depth up if required when native scaling is in use 2026-01-17 15:53:08 +01:00
JordanTheToaster
bb4ee5f0fb GS/HW: Optimize source sizes when using CLAMP_CLAMP 2026-01-16 14:37:22 -05:00
lightningterror
3b561be221 GS/TC: Do a shader copy/blit for depth textures when doing tc moves.
dx11 doesn't support partial depth copies.
dx12 supports depth copies with Programmable Sample Positions tier 1 and up.
Add missing osd copy counts for moves.

We can just do blit for all since performance is the same.
2026-01-16 03:45:06 +01:00
SternXD
d983b2b066 Copyright: Change year from 2002-2025 to 2002-2026 2026-01-15 00:22:32 +01:00
refractionpcsx2
eec3951315 GS/TC: Check format matches on invalidation rect translation 2026-01-14 01:20:08 +01:00
refractionpcsx2
61280a945d GS/HW: Tweak Native Scale Upscaled to work in more scenarios 2026-01-11 09:36:00 +01:00
TJnotJT
461f01718c GS/HW: Prevent assertion in StretchRect().
Depth copy was using the color StretchRect() causing an assertion in debug builds.
2025-12-12 00:01:25 +01:00
JordanTheToaster
10e13cfece GS/HW: Test double buffer offset from target base address on lookup 2025-11-25 17:50:06 +01:00
refractionpcsx2
080858b97c GS/HW: Apply native scaling to exact GPU CLUTs 2025-11-16 22:10:22 +01:00
TJnotJT
6f54da6234 GS/HW/TC: Do not force temporary source creation for PSMT8 sources that request outside a target valid area. 2025-11-15 16:56:57 +01:00
TJnotJT
44f47f11b8 GS/HW/TC: Force a temporary source creation in edges cases.
Case: When looking up a source, we find a perfect BP hit for a target.
However, the requested area is outside the target's valid area.
Don't use the target direct and instead load from memory in a temporary source.

Co-authored-by: refraction
2025-11-15 16:56:57 +01:00
TJnotJT
b5a2d04b2e GS/HW/TC: Remove outside target PSM check in LookupSource.
Co-autored-by: refraction
2025-11-15 16:56:57 +01:00
TJnotJT
8508ebb7d3 GS/HW: Remove legacy code for changing RT from depth to color in TC invalidation.
Co-authored-by: refraction
2025-11-15 16:56:57 +01:00
refractionpcsx2
9b4e3b8f74 GS/HW: Adjust target lookup to better check on source match 2025-11-11 22:36:46 +01:00
refractionpcsx2
c5438ceca3 GS/HW: Fix up invalidly selected Tex in RT targets 2025-11-11 20:58:35 +01:00
lightningterror
6b52937262 GS/TC: Make sure target is created before setting any flags.
Xenosaga 3 fails to create a target because the rect is empty so we should avoid setting any flags since it's null.
2025-10-14 02:19:08 +02:00
lightningterror
2a7bf35f20 GS/TC: Point m_from_target to new target if it's also a source in CombineAlignedInsideTargets.
Issue is it was erasing the source which doesn't get passed back to the main draw function,
so we should be setting m_from_target to either new target or null because it is linked.
2025-10-07 11:48:32 +02:00
lightningterror
47897fc2be GS/TC: Add caching to block offset calculation for TranslateAlignedRectByPage and DirtyRectByPage. 2025-10-04 01:55:52 +02:00
lightningterror
b451602f69 GS/TC: Check for y offset when calculating block offset.
Make sure the rect starts at the beginning.
2025-10-04 01:55:52 +02:00
lightningterror
96ac35a4bd GS/TC: Optimize block offset calculations in ComputeSurfaceOffset.
Same deal as before, swap the fast linear loops to be second since they will be faster.
2025-10-04 01:55:52 +02:00
lightningterror
e550cf9b63 GS/TC: Optimize block offset calculation.
Swap offset x and y loops:
Having the y loop first allows for better optimizations/caching since it's bigger.
Also optimize start point loop conditions for target rect.
2025-09-30 22:01:46 +02:00
lightningterror
427096dc29 GS/HW: Adjust texture copies perfmon info for CopyRect.
If we are optimizing out copies we don't need to increment the perf monitor info.

Also remove duplicate tex copies perf monitor info in tc as we already add it in CopyRect function.
2025-09-20 02:27:50 +02:00
TJnotJT
fde045241f GS: Allow full dirty rect on zero age targets.
Allows EE->GS transfers to invalidate targets updated in the current draw to be invalidated if they are fully overwritten by the transfer.
2025-08-16 03:17:51 +02:00
lightningterror
e4d8f3d901 GS/TC: Resize target instead of deleting it.
Valids and drawn since last read doesn't match, keep the target but resize it.
2025-08-08 23:00:01 +02:00
TellowKrinkle
8fd91cb7df Formatting: Apply AlignWithSpaces 2025-07-31 15:20:27 +02:00
lightningterror
83ebbe95c5 GS/TC: Don't split/resize buffer when texture buffer width is 0.
Textures wrap within a single page.
2025-07-16 09:49:04 +02:00
lightningterror
099e1f900d GS/TC: Fix wrong block per page in LookupSource. 2025-07-15 16:04:58 +02:00
TheLastRar
f747abcc3b GS: Prefix page/block size defines 2025-07-12 20:10:59 +02:00
refractionpcsx2
21042934e3 GS/TC: Allow preloading before merging buffers 2025-07-06 18:33:39 +02:00
refractionpcsx2
691c3764ac GS/TC: Check channel overlap for local mem invalidation/readbacks 2025-07-04 19:14:46 +02:00
refractionpcsx2
aa0292ada1 GS/TC: Improve dirty overlap conditions 2025-07-04 19:14:46 +02:00
TJnotJT
181ceb38cc GS: Put psm_str in the GSUtil struct. 2025-06-29 16:43:09 -04:00
refractionpcsx2
35093c3e37 GS/HW: Avoid single pixel overlap on lookups + improve buffer splitting 2025-06-27 18:04:29 +02:00
refractionpcsx2
7f8488771d GS/TC: Improve heuristics for sequenced draws inside targets 2025-06-27 18:03:48 +02:00
refractionpcsx2
57ff271f4b GS/HW: Fix up offset Z behaviours and copy ranges 2025-06-27 18:03:48 +02:00
refractionpcsx2
17b6cc00ab GS/HW: When expanding a target for display, expand valid area 2025-06-27 18:03:19 +02:00
refractionpcsx2
ec288ffa62 GS/TC: Fix CanTranslate rect BWs, disallow block inside target lookup 2025-06-23 06:27:41 +02:00
refractionpcsx2
60adfd5046 GS/TC: Fix region area on new source interpreted for shuffle 2025-06-21 05:52:50 +02:00
lightningterror
2f84bf0cca GS/TC: Don't enable Frame buffer conversion on PSMT8.
We have dedicated shader now, no need.
2025-06-20 02:01:28 +02:00
refractionpcsx2
3e2c3e5075 GS/TC: Slight fix for rect translation with block offset 2025-06-20 02:00:51 +02:00
refractionpcsx2
2640678cac GS/HW: Adjust which function gets used for clearing depth on perfect match 2025-06-14 01:30:00 +02:00
refractionpcsx2
b30444c0d0 GS/HW: Fix bug and improve inside target tracking on HW moves 2025-06-12 23:01:36 +01:00
refractionpcsx2
76e6208d1b GS/TC: Fix region for tex in rt depth 2025-06-10 20:12:41 +02:00