Henrik Rydgård
ab108f7f0c
BBOX: Avoid z clipping issues by culling in clip space.
2026-06-03 10:05:21 +02:00
Henrik Rydgård
847953fd31
Fix wrong logic causing excessive software transform fallback if cull planes are missing. Minor cleanup.
2026-05-31 13:31:16 +02:00
Henrik Rydgård
702088c2d0
Fix backwards check for minZ/maxZ in fragment shader
2026-05-31 10:40:14 +02:00
Henrik Rydgård
bdd72c08f3
Fix dirtying caused by clip flag state. This could probably be a bit smarter.
2026-05-30 21:47:21 +02:00
Henrik Rydgård
0e880a16f0
Flush on changed clipInfoFlags. This fixes many Z fighting artifacts caused by strange joining of meshes and sw/hw tranform conflict.
2026-05-30 19:07:59 +02:00
Henrik Rydgård
44ece6dfa2
Determine the clip flags directly when culling, simplifying the code.
2026-05-30 19:07:59 +02:00
Henrik Rydgård
2a5c2fa477
Check if the viewport transform matches the clip space. If so we can skip the near clip plane.
2026-05-30 19:07:59 +02:00
Henrik Rydgård
189dde8115
Cache the cull matrix. Minor bbox optimization.
2026-05-30 19:07:59 +02:00
Henrik Rydgård
e75d9f8a5f
Unify the bounding depth checks, correct them if minmax clip is needed
2026-05-30 19:07:59 +02:00
Henrik Rydgård
0eede05f5f
Implement fragment shader depth clamp and min/max discard. Slow on some hardware, but it's a fallback.
2026-05-30 19:07:59 +02:00
Henrik Rydgård
5ad24adc93
Cleanup, increase the max cull count. Flatout water works now.
2026-05-30 19:07:59 +02:00
Henrik Rydgård
86f9618cb9
Fallback to software transform if draw intersects -W<Z<W
2026-05-30 19:07:59 +02:00
Henrik Rydgård
5eb114d3d9
Put more useful data in BoundingDepths. Slightly more costly.
2026-05-30 19:07:59 +02:00
Henrik Rydgård
b1723086be
Plumb through depth information (although not yet always generated)
2026-05-30 19:07:58 +02:00
Henrik Rydgård
08f4c8fae8
Compute min/max Z and W from the culling loop, use to cull some more
2026-05-30 19:07:58 +02:00
Henrik Rydgård
f0d715feaa
During culling, evaluate minZ,maxZ,minW,maxW, and use them to cull some things. Also, assorted vshader work.
2026-05-30 19:07:58 +02:00
Henrik Rydgård
5808afef10
Implement minZ/maxZ through user clip planes
2026-05-30 19:07:58 +02:00
Henrik Rydgård
ae98055cec
Delete a lot of legacy depth and viewport code, fix OpenGL
2026-05-30 19:07:58 +02:00
Henrik Rydgård
f60e27a9b7
Just some refactoring of the GPUStatistics struct, and more use of StringWriter
2026-05-29 14:40:31 +02:00
Henrik Rydgård and GitHub
b65bbaf92c
Merge pull request #21678 from nintendo424/gpu-save-first-frame
...
gpu: Preserve first-frame font render targets
2026-05-27 12:22:47 +02:00
Henrik Rydgård
4be2a853b7
FastCull: Integrate the vertex position loading into the culling loop
2026-05-25 18:16:34 +02:00
Henrik Rydgård
82a888fd8e
Reimplement the fast culling using CrossSIMD
2026-05-25 18:16:34 +02:00
Henrik Rydgård
250abe0d56
Loongarch64 build fixes
2026-05-25 15:41:24 +02:00
Henrik Rydgård
37f6fda9c9
Add a CrossSIMD loongarch64 LSX implementation. Note: This is untested!
2026-05-25 15:40:22 +02:00
Henrik Rydgård
4a55fc6724
Prepare TestBoundingBoxFast for optimization
2026-05-25 13:37:27 +02:00
Henrik Rydgård
2eca0123f1
Correct culling in case of some weird viewport setups
2026-05-23 14:49:17 +02:00
Henrik Rydgård
fa856fbf68
Pass the culling unit tests.
2026-05-23 14:40:15 +02:00
Henrik Rydgård
a854a2bed1
Correct some comparisons for bbox
2026-05-23 14:40:15 +02:00
Henrik Rydgård
0d33cd0a65
Convert the BBOX/BJUMP culling to use the worldviewproj matrix and a screen space check.
2026-05-23 14:40:15 +02:00
Henrik Rydgård
7a093623e8
Sonnet NEON
2026-05-23 14:40:15 +02:00
Henrik Rydgård
1fb9446d5a
Optimize the SSE path
2026-05-23 14:40:15 +02:00
Henrik Rydgård
e64a61017e
Use the new method for NEON and fallback fast culling
2026-05-23 14:40:15 +02:00
Henrik Rydgård
dbba46bfb5
Simplify away some trivial math
2026-05-23 14:40:15 +02:00
Henrik Rydgård
893bc732a1
Fast culling: Use the worldviewproj matrix to avoid the need for planes
2026-05-23 14:40:15 +02:00
Henrik Rydgård
5cfbf50111
Keep updated products of view*proj and world*view*proj matrices. Use to simplify bbox culling.
2026-05-21 19:18:32 +02:00
nintendo424
e5689d1adc
gpu: Preserve first-frame font render targets
...
Some games render HLE sceFont glyphs into small VRAM-backed framebuffers and immediately sample them as textures. This needs both the source glyph buffer and the temporary render target to be preserved before later commands overwrite or rebind them.
Save first-frame data from the previous render target before creating a new framebuffer, since ResizeFramebufFBO() makes the new framebuffer current. Also flush pending draws before PGF writes over a glyph buffer that may still be referenced by queued texture draws.
Backend software transform normally reports safe framebuffer size during draw flush, but first-frame readback can happen before queued draws reach that path. Estimate through-mode rectangle/triangle bounds before SubmitPrim() and feed those bounds to SetSafeSize(), using actual vertices clamped to scissor instead of a tiny-target heuristic.
Fixes missing text in Evangelion JO.
2026-05-15 12:23:14 -04:00
Henrik Rydgård
10b6c14a9e
Avoid memory access functions that can cause memory exceptions in ImDebugger. Minor opt.
2026-03-31 17:53:00 -06:00
Henrik Rydgård
991d7bdfab
VertexDecoder: Refactor away lowerbound/upperbound parameters
2026-02-05 13:26:17 +01:00
Henrik Rydgård
10759dc8b9
DrawEngineCommon: Avoid using member variables as loop counters, bad for perf
2026-01-30 14:10:36 +01:00
Henrik Rydgård
8728be5455
Fix joining TRIANGLE_LIST draws with a vertex count non-divisible by 3
...
Fixes #7503
2026-01-23 18:54:22 +01:00
Henrik Rydgård
7853881210
GPU header cleanup: Avoid including GPUCommon.h in some places
2025-11-23 20:37:37 +01:00
Henrik Rydgård
9d1f8a2575
Don't forget to update the vertex addr even when culling 2D draws
...
Fixes #20454
2025-06-06 17:53:49 +02:00
Henrik Rydgård
8ed898c5e6
GPU: Constify VertexDecoder pointers, remove in some cases
2025-05-14 15:13:59 +02:00
Henrik Rydgård
bddd3c2a30
Minor stuff
2025-04-17 18:45:55 +02:00
Henrik Rydgård
5d85d5ed22
Depth raster: Rename some variables, fix incorrect draw limit
2025-04-10 17:49:06 +02:00
Henrik Rydgård
b080f7da6b
Small depth raster refactor
2025-04-10 17:13:48 +02:00
Henrik Rydgård
fd88f79d07
CrossSIMD: Fix more no-simd fallbacks. The depth rasterizer now works in TEST_FALLBACK mode.
2025-02-10 11:51:22 -06:00
Henrik Rydgård
c78fa60431
Add better way to check if CrossSIMD has been natively implemented
2025-01-28 10:56:52 +01:00
Henrik Rydgård
9caf37d28f
Turn off depth raster if SIMD not available
2025-01-28 10:54:43 +01:00
Henrik Rydgård
bd8e423358
Add some comments
2025-01-22 09:47:00 +01:00