TJnotJT
e490685b42
GS/HW: Improve unordered access flag handling for RTs.
...
Only for DX11, which doesn't track resource state otherwise.
2026-06-03 03:26:24 +02:00
TJnotJT
7b0c39a20d
GS/GL: Remove ROV support.
...
Buggy on multiple systems, even with various barrier hacks.
2026-06-03 03:26:24 +02:00
TJnotJT and SternXD
059d631a6d
QT/FSUI: Add ROV options to FSUI and QT.
...
Co-authored-by: SternXD
2026-06-03 03:26:24 +02:00
TJnotJT and TheLastRar
7c255bd58d
GS/VK: Fix for broken feedback transitions on Windows RDNA2.
...
Co-authored-by: TheLastRar
2026-06-03 03:26:24 +02:00
TJnotJT
bbcd5ec25e
GS/HW: ROV support.
2026-06-03 03:26:24 +02:00
TJnotJT
8df49d7676
GS/HW: Fix a number of compiler warnings.
...
Missing default case in switch statement.
Signed/unsigned implict conversion.
Unused variables.
Hidden virtual overloaded function.
2026-05-31 22:38:31 +02:00
TJnotJT
74f2f73ce6
GS/HW: Use an enum instead of boolean to specify nearest/bilinear filtering.
2026-05-31 18:43:01 +02:00
TJnotJT and TellowKrinkle
1e2f60a9b8
GS/HW: Ignore HW bilinear flag for shaders that do SW bilinear.
...
Co-authored-by: TellowKrinkle
2026-05-31 18:43:01 +02:00
TJnotJT and TellowKrinkle
bf892e9ece
GS/HW: Treat depth input as R32 color input in convert shaders.
...
Co-authored-by: TellowKrinkle
2026-05-31 18:43:01 +02:00
TJnotJT and TellowKrinkle
a44fe80caa
GS/HW: Refactor shader copy and texture formats.
...
Make it easier to add new depth formats, and code cleanup.
Co-authored-by: TellowKrinkle
2026-05-31 18:43:01 +02:00
TJnotJT
3f4b424200
GS/TC: Refactor/cleanup preload function.
2026-05-30 10:47:47 -04:00
TJnotJT
4d25bdcabb
GS/DX11/GL: Adapt full barrier multidraw FB copy for sampling RT/DS hazards.
2026-05-30 14:52:42 +02:00
TJnotJT
02c5f8f648
GS/HW: Fix offset draw vertex trace/draw rect.
2026-05-29 23:27:33 +02:00
TJnotJT
9cd0ec1634
GS/HW: Use sampled area for RT/DS sampling hazards.
2026-05-23 11:14:46 +02:00
TJnotJT
a19b3747ea
GS/HW: Add AA1 triangle corner caps and edge extrapolation.
2026-05-20 01:02:00 +02:00
TJnotJT
534330aa99
GS/VK: Make sure layout changes are propagated to descriptors.
2026-05-18 08:41:26 +02:00
TJnotJT
c1cb214a03
GS/HW: Add debug blend setting.
...
Will enable SW blend and disable many optimizations.
2026-05-13 19:49:07 +02:00
TJnotJT
4ef84fa51c
GS/HW: Fix flat shaded color in AA1 shader.
2026-05-12 14:46:49 +02:00
TJnotJT
4fa2b8e45d
GS/HW: Fixes/improvements to early scissor/bbox test.
2026-05-09 13:48:42 +02:00
TJnotJT
0949f193b8
GS/SW: Adjust bounds in assertion to present false positive.
...
Account for the fact that bottom/right coordinates are exclusive.
2026-05-06 20:46:51 +02:00
TJnotJT
5f3dc1a76e
GS/SW: Early exit optimization for multithreaded horizontal lines.
2026-05-06 20:46:51 +02:00
TJnotJT
9afea55bb6
GS/SW: Adjust bbox to account for AA1 and points/line rounding.
2026-05-06 20:46:51 +02:00
TJnotJT
433614ae85
GS: Adjust primitive bbox in vertex kick to account for AA1.
2026-05-06 20:46:51 +02:00
TJnotJT
00c85c4a8f
GS/TC: Use temporary source on invalid TEX0.
2026-05-06 19:18:04 +02:00
TJnotJT
8b82fbb449
GS/HW: Add constant buffer dumping.
2026-05-03 18:05:35 +02:00
TJnotJT
3d71e310c0
GSRunner: Add -debugdevice command line parameter.
2026-04-30 02:21:35 +02:00
TJnotJT
02d0f613ba
GS/HW: Fix brackets in texture shuffle detection.
2026-04-30 02:03:44 +02:00
TJnotJT
f95b2ce24d
GS/HW: Reorganize AA1 setup and fix some performance bugs.
...
Separate depth feedback setup it is not duplicated in both AA1 and alpha test setup.
Try to optimize out depth feedback in AA1 if triangle interiors are discarded.
Fix barriers not being properly enabled for AA1 triangles (was only activating if depth test was used).
2026-04-25 22:26:09 +02:00
TJnotJT
8cfd583605
GS/HW: Use correct draw functions in backend passes.
...
Fixes broken primid and blend multipass draws.
Regression from AA1 changes to draw functions.
2026-04-23 02:32:33 +02:00
TJnotJT
d0ee5b859a
GS/VK: Fix flat specifier in VK shader.
2026-04-21 23:28:00 +02:00
TJnotJT
2ae8f1f23f
GS/HW: Support HW AA1 for lines/triangles.
...
Credits: concept by TellowKrinkle.
2026-04-20 11:16:27 +02:00
TJnotJT
3722d392d8
GS/TC: Remove debug code.
2026-04-18 13:30:19 +02:00
TJnotJT
09fcc4d60e
GS/TC: Break LookupTarget() into 3 functions.
...
Separate draw lookup from frame lookup. Put common code in another processing function.
2026-04-17 20:17:46 +02:00
TJnotJT
c26c2236c5
GS/TC: Fix alpha write masking check in target update.
...
Make sure we detect when FB mask is such that only alpha is written. Avoid incorrectly updating RGB to a target when we don't need it and possibly nuking other depth targets in the process.
2026-04-15 20:58:08 +02:00
TJnotJT
f3496e3858
GS/HW: Set valid flags if display target has exact match with recent transfer.
2026-04-15 20:56:23 +02:00
TJnotJT
fce3be8544
GS/HW: Disable HPO/even sprite position on texture shuffles.
...
Quad conversion in texture shuffles is already aligned and not intended to interact with upscaling coord fixes.
2026-04-12 19:38:14 +02:00
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