TJnotJT
06616ec98e
GS: Refactor texture shuffle detection and quad conversion.
2026-04-11 08:16:04 +02:00
TJnotJT
26bd916e37
GS: Add utility functions for vertices/quads.
2026-04-11 08:16:04 +02:00
TJnotJT
9022072de8
GS/HW: Separate DrawPrims() into functions.
2026-04-07 17:42:46 +02:00
TJnotJT
08d3cc32f4
GS: Ignore CRTC outputs with negative sizes.
2026-04-07 16:20:27 +02:00
TJnotJT
372fadfb99
GS/HW: Disable depth if zero clear, ZBP == FBP, and depth/RT different bpp.
2026-03-29 21:53:14 +02:00
TJnotJT
406c2c0bbf
GS/HW: Cleanup DATE configuration.
2026-03-29 21:10:33 +02:00
TJnotJT
a5ba35ce92
GS/HW: Check overlap of required rect with valid area in source lookup.
...
Check recent transfers for RT in source lookup if it has dirty rects or the valid area does not intersect with the required rect. The latter check is needed in case a recent transfer did not intersect the valid area of the RT.
2026-03-29 21:04:09 +02:00
TJnotJT
1356f282d0
GS/HW: Don't clamp negative coords to 0 in texture shuffle detection.
2026-03-20 20:48:53 +01:00
TJnotJT
daa0d2d3c4
GS: Check if CRTCs have same source after register update.
...
Previously the check happened before the register update, which could cause it to be incorrect.
2026-03-20 12:40:23 +01:00
TJnotJT
1b4af9deef
GS: Fix check for RC1 overwriting RC2 in merge.
...
Previously, the bbox of each output was not checked, leading to incorrectly assuming that RC2 was overwritten by RC1. This change makes sure that the RC2 bbox is contained in the RC1 bbox to determine that it's overwritten.
2026-03-20 12:40:23 +01:00
TJnotJT
93212882d0
GS/HW: Depth feedback loops and accurate AFAIL. ( #13631 )
...
Add support for depth feedback loops either via texture barriers or copies.
DX12 and OpenGL do depth feedback by creating a temporary color texture to hold Z and using multiple color outputs.
Use the depth feedback for accurate AFAIL (enabled via INI setting).
2026-03-18 02:12:12 +01:00
TJnotJT
8a46f9e6ca
GSRunner: Disable framerate limit in runner and dump frame timing information.
2026-03-12 18:46:47 +01:00
TJnotJT
848a9fd551
GS: Fix unused lambda capture warnings.
2026-02-19 14:14:16 +01:00
TJnotJT
24090772cd
GS/HW: Add option for dumping HW config data.
...
Dumps HW config per draw.
Helps debugging/optimizing HW pipeline changes.
2026-02-18 22:25:54 +01:00
TJnotJT
12136217c4
GS/HW: Use bounding octagon for overlap detection.
2026-02-14 21:51:23 +01:00
TJnotJT
0e5445d2a7
GS/HW: Simplify overlap heuristics, remove axis-aligned tristrip check.
2026-02-14 21:51:23 +01:00
TJnotJT
e83a343bab
GS/HW: Save tristrips in draw list computation to avoid recomputing.
2026-02-14 21:51:23 +01:00
TJnotJT
d5aeb9e20a
GS/HW: Clean up drawlist computation.
2026-02-14 21:51:23 +01:00
TJnotJT
d9128872fd
GS/HW: Paste together tristrips that share common end points.
2026-02-14 21:51:23 +01:00
TJnotJT
6e129a69d2
GS/HW: Detect tri strips with 2 triangles in drawlist.
2026-02-14 21:51:23 +01:00
TJnotJT
0e9de44c72
GS: Add some GSVector4i methods.
2026-02-10 23:03:19 +01:00
TJnotJT
e82fa0bba5
GS/HW: Require 32 bit RT for accumulation blend on max blend.
2026-01-30 11:06:13 +01:00
TJnotJT
5710c2740c
GS/HW: Enable Z floor only when needed.
2026-01-26 23:30:09 +01:00
TJnotJT
ec96feb22e
GS/HW: Use conservative depth for shader depth output.
2026-01-26 23:30:09 +01:00
TJnotJT
a1173c53d3
GS/HW: Reduce barriers in triangle strips/fans.
...
Account for triangles forming non-overlapping quads in triangles strips/fans.
2026-01-26 11:57:20 +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
TJnotJT
3a7489b2cc
GS: Fix typos in GSState::EarlyDetectShuffle().
2025-12-07 07:20:14 +01:00
TJnotJT
580218d495
GS: Do scissor test in autoflush handler.
...
The autoflush handler is called before the scissor test in the vertex kick.
To save some work and prevent unnecessary autoflushes, do the scissor test
in the autoflush handler also.
2025-11-29 04:55:03 +01:00
TJnotJT
519f280fa5
GS: Early detection of shuffles in vertex kick to prevent autoflushing.
2025-11-29 04:55:03 +01:00
TJnotJT
a33ee13bb4
GS: Add LOD checking to HandleAutoflush().
...
Only enabled when the draw might use mipmapping.
2025-11-29 04:55:03 +01:00
TJnotJT
0c70cc7e5a
GS: Add checking of multiple LODs to IsAutoFlushDraw().
2025-11-29 04:55:03 +01:00
TJnotJT and TellowKrinkle
f322dfb1d4
GS/SW: Use non-saturating ARM instructions for color gradient setup.
...
This is more efficient on ARM, though the equivalent instructions are not currently used in the x64 JIT and C++ versions of GSVector.
Co-authored-by: TellowKrinkle
2025-11-26 20:25:10 +01:00
TJnotJT and TellowKrinkle
a7f5ddfe0d
GS/SW: Mask color gradients to prevent incorrect clamping.
...
Co-authored-by: TellowKrinkle
2025-11-26 20:25:10 +01:00
TJnotJT
35624a12d9
GS/HW: Refactor StretchRect() to have single entry to renderer/reduce duplication.
2025-11-25 18:38:52 +01:00
TJnotJT
f1dc232f91
GSRunner: Use correct config name to disable shader cache.
2025-11-19 02:50:01 +01:00
TJnotJT
be1af0cd0f
GS: Allow dumping draw/frames stats.
2025-11-16 21:26:10 +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 and refraction
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 and refraction
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
TJnotJT
c96607fe37
GSRunner: Allow loading GS settings from INI.
2025-10-24 21:44:52 -04:00
TJnotJT
5445cb516a
GS: Handle zero clears separately in transfer dump.
2025-10-24 21:40:37 -04:00
TJnotJT
e751f367ca
GS/SW: Rewrite vertex ST values if they might overflow the rasterizer fixed point format.
2025-10-09 19:42:27 +02:00
TJnotJT
13f2d87ba8
GS: Add ST NaN tracking to the vertex trace.
...
Add fields that will trace if any of the S/Q or T/Q values is NaN. Ignore any NaN ST values while calculating min/max.
2025-10-09 19:42:27 +02:00
TJnotJT
4d93285ca2
GS: Use triangle quad detection in primitive overlap detection.
...
Coauthored-by: TellowKrinkle
2025-10-09 03:26:08 +02:00
TJnotJT
08552a83cc
GS/SW: Clamp colors, Z, fog to allowed ranges.
2025-10-07 07:34:26 +02:00
TJnotJT
ee417ee4c5
GS/SW: Silence code analyzer warnings.
2025-10-07 07:34:26 +02:00
TJnotJT
869837f5f0
GS/SW: Accurate rounding for points.
2025-10-07 07:34:26 +02:00
TJnotJT
7ab6bac39a
GS/SW: Improve accuracy of line drawing and edge antialiasing.
2025-10-07 07:34:26 +02:00
TJnotJT
bafd87694c
GS/HW: Unify barrier handling in DX11/GL/VK/MTL.
...
Make sure the one_barrier/full_barrier flags are passed correctly depending on the pass (main or alpha second pass).
Check that the drawlist is non-empty when a full barrier is requested.
2025-09-30 05:53:59 +02:00
TJnotJT
caf6298ad1
GS/DX11: Unify batched/per-prim multidraw and do partial copies for barriers.
2025-09-30 05:53:59 +02:00
TJnotJT
7f0d287512
GS: Refactor drawlist saving for full barrier multidraw.
...
Get drawlist when needing full barriers and API doesn't support texture barrier.
Make drawlist computation lazy (only computed when will be used).
When API does not provide barriers get bbox of batched draws.
2025-09-30 05:53:59 +02:00
TJnotJT
fe133b3c0c
GS: Remove unused PRMODE register from dump.
2025-09-25 03:55:06 +02:00
TJnotJT
eb42ce3343
GS: Add prim class name in vertex dump for better readability.
2025-09-25 03:55:06 +02:00
TJnotJT
c50c24e3c9
GS: Adjust spacing in vertex dump for better readability.
...
Space between each primitive in the vertex list.
Extra space for negative X, Y, U, V coordinates.
Avoid double blank lines after vertex list.
2025-09-25 03:55:06 +02:00
TJnotJT
ab85d759b0
GS: Add fog coefficient to the vertex dump.
2025-09-25 03:55:06 +02:00
TJnotJT
42a6076967
GS: Ignore output on RC1/2 when the data is not used.
2025-09-24 15:12:22 +02:00
TJnotJT
6720c9ef83
GS/SW: Misc code cleanup.
2025-09-23 15:22:07 +02:00
TJnotJT
704e531c1f
GS: Make sure transfers are dumped between consecutive vsyncs.
2025-09-16 14:02:10 +02:00
TJnotJT
203981182d
GS: Make privileged registers dumping YAML.
2025-09-16 14:02:10 +02:00
TJnotJT
14b67e3ac3
GS: Make context dump YAML. Add comments to output.
2025-09-16 14:02:10 +02:00
TJnotJT
f83e11892b
GS: Add dumping of transfer bitmaps.
2025-09-16 14:02:10 +02:00
TJnotJT
a8c549baee
GS: Refactor duplicated debugging code in HW/SW renderer.
...
Specifically, code for dumping the draw information (vertices, registers, transfers).
2025-09-16 14:02:10 +02:00
TJnotJT
13142dd31d
GS: Add memory transfers dumping as a text file.
...
In addition to vertices and registers, dumps the memory transfers that occurred just before the draw. Helps with debugging.
2025-09-16 14:02:10 +02:00
TJnotJT
ed5c364603
GS: YAML dumping of vertices.
2025-09-16 14:02:10 +02:00
TJnotJT
af5279cf56
GS/HW: Handle texture shuffle with pixel reversals.
2025-08-28 18:55:47 +02:00
TJnotJT
6159cd4114
GS/SW: Fix bbox computation in SW draw().
...
The bbox was missing right/bottom pixels if they were exactly on a pixel center (exact integer). Removed the extra check for 0 width/height bbox for lines/points since they are no longer needed (the bbox will always be at least 1 pixel now). Appears to only affect the SW rasterizer when the bbox right/bottom end point is a multiple of 16 (SW rasterizer allocates scanlines to threads in blocks of 16).
2025-08-20 23:55:49 +02:00
TJnotJT
3c70d7f575
GS/HW: Handle texture shuffle sprite not 16-pixel-multiple wide.
2025-08-20 21:53:55 +02:00
TJnotJT
657d20d36e
GS: Small fix/addition to info dumping.
2025-08-16 03:22:27 +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
TJnotJT
2f2614737a
GS: Make some GSUtil constexpr functions header only.
...
The functions for getting primclass and vertex counts may be used in constexpr contexts in templated functions.
2025-07-31 20:44:31 +02:00
TJnotJT
116eb6dc5b
Misc: Fix changing console log file.
...
Console logging file should be updated whenever it is not equal to the old file. The test to check this was inverted.
2025-07-30 12:10:04 -04:00
TJnotJT
26b6394b67
GS: Use std::array for fixed size array.
2025-07-27 12:56:10 -04:00
TJnotJT
fc4407aaef
GS: Add secondary vertex buffer for copy/modifying vertices.
...
Currently only used in HW renderer to fix vertices for provoking-first-vertex APIs.
2025-07-19 02:39:01 +02:00
TJnotJT
2a418e3282
GS/HW: Handle first vertex provoking APIs in GSRendererHW.cpp.
2025-07-19 02:39:01 +02:00
TJnotJT
59415542ff
GS: Remove all usage of provoking first/flat swapped in early pipeline.
...
Removes said usage from GSState and GSVertexTrace (and helper classes). The end goal is to support first-vertex-provoking APIs in GSRendererHW instead of early in the pipeline.
2025-07-19 02:39:01 +02:00
TJnotJT
181ceb38cc
GS: Put psm_str in the GSUtil struct.
2025-06-29 16:43:09 -04:00
TJnotJT
5e160fca8f
Tools: Small fix to gsrunner args.
2025-06-06 18:05:37 -04:00
TJnotJT
23a28be346
GS/UI: Rename dumping variables and UI labels to be more consistent/clear.
2025-02-24 17:53:01 -05:00
TJnotJT
a0e24dd36f
UI: Add debug UI options for new dumping options.
2025-02-24 17:53:01 -05:00
TJnotJT
46221a8500
Tools: Fix typos in GS dump runner help.
2025-02-12 17:40:49 -05:00
TJnotJT
8b0e61af8c
Tools: Remove debug preprocessor check around dumping of HW renderer frames.
2025-02-12 17:40:49 -05:00
TJnotJT
2b0a78811a
Tools: Add additional options for dumping in GS runner. Other formatting fixes.
2025-02-12 17:40:49 -05:00