Henrik Rydgård and Claude Opus 5.5
0f2b5613fb
SoftGPU: Interpolate Gouraud color and perspective UVs like the GE
...
Both use the GE's fixed point depth plane. Color is screen-linear, also in
transform mode, with 8-bit channels as the plane values (gpu/probe exp54). For
perspective UVs, s = u * R(w), t and q = R(w) become 15-bit integers at the
triangle's largest exponent, go through the plane, and u = s * R(q) per pixel
(exp55-56, bit exact at 1/16 texel).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-10-02 15:09:42 -06:00
Henrik Rydgård and Claude Opus 5.5
524fac1c32
SoftGPU: Clip at the near plane like the GE
...
Measured with gpu/probe exp43-47, bit exact:
- New vertices are interpolated from the inside vertex, t = d_in / (d_in -
d_out) with d = z + w through the GE adder, using the GE's reciprocal;
out - in is truncated to float24 before the multiply by t, and t and each
coordinate use float24 products and adds.
- With one vertex outside, the quad is split from the vertex before it in the
GE's order: (p, a, b) and (p, b, n). The GE takes odd strip triangles in
reverse and fan triangles in order, so SendTriangle now says when the
vertices it gets are reversed from that.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-10-02 15:09:42 -06:00
Henrik Rydgård and Claude Opus 5.5
93f57a4f38
GPU: Delete copy operations on classes that own resources
...
These own GPU objects, memory or refcounts in their destructors (or assert
there that they were torn down), so a copy would double-free. Nothing copies
them today; this keeps it that way. The manager base classes cover every
backend's subclass.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-29 10:33:32 -06:00
Henrik Rydgård
623545bd24
Delete the "Hardware tessellation" feature.
...
Very hard to maintain and debug, not worth it.
2026-06-16 16:17:14 +02:00
Henrik Rydgård
0dc6e36d19
Delete redundant implementation of vertex preview in SoftGpu
2026-06-02 15:43:11 +02:00
Henrik Rydgård
bb573e6e0c
Well, it builds, but doesn't work yet.
2026-06-02 12:33:53 +02:00
Henrik Rydgård
a317890c08
Remove the GPUDebugInterface class
...
Just a pointless extra layer in the class hiearchy, making it
unnecessarily hard to modify the interface.
Might as well hit GPUCommon directly.
2026-06-02 11:15:08 +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
8b84fd555d
Apply triangle near-clipping in software transform.
...
Fixes, but only in SW transform, #10914
Re-enable range culling, oops.
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
f60e27a9b7
Just some refactoring of the GPUStatistics struct, and more use of StringWriter
2026-05-29 14:40:31 +02:00
Henrik Rydgård
e71ffc59a6
Remove unnecessary IsStarted method
2026-02-17 10:18:08 +01:00
Henrik Rydgård
32df2f7a03
Remove unused functions
2025-01-28 10:54:43 +01:00
Henrik Rydgård
ee297e974d
Move more code into SoftwareTransformCommon, cleanup
2024-12-18 13:57:26 +01:00
Henrik Rydgård
54d18bb343
Lift some more debugging functionality into GPUCommon
2024-12-15 14:03:05 +01:00
Henrik Rydgård
11dbae3457
Remove the "DispatchFlush" mechanism, not convinced it's a win
2024-12-15 13:42:05 +01:00
Herman Semenov
b57dab2812
[GPU] Make static and const methods if possible
2024-04-05 17:04:31 +03:00
Henrik Rydgård
078018a943
Move the clockwise calculation out of DrawEngineCommon
2023-10-10 13:16:34 +02:00
Henrik Rydgård
880379c15d
Extract some minor changes from #17497
2023-06-12 20:20:06 +02:00
Henrik Rydgård
72bed6f2b5
Some DeviceLost/DeviceRestore cleanup
2023-02-26 11:05:52 +01:00
Unknown W. Brackets
be84bc9934
softgpu: Detect binner alloc fail and bail.
2023-01-01 06:59:14 -08:00
Unknown W. Brackets
a7b7bf7826
Global: Set many read-only params as const.
...
This makes what they do and which args to use clearer, if nothing else.
2022-12-10 21:13:36 -08:00
Unknown W. Brackets
dc962094f8
softgpu: Correctly fix inversions, matching tests.
...
Inversions are allowed just fine, but if clipping results in coordinates
outside range, the triangle should be culled. Fixes more wanted
inversions.
2022-11-30 23:20:39 -08:00
Unknown W. Brackets
7880eb15c1
softgpu: Always use software skinning.
...
There's only software skinning, after all.
2022-11-06 08:44:22 -08:00
Unknown W. Brackets
80cccd7abb
Build: Fix debug build on Windows 32-bit.
2022-10-01 17:07:27 -07:00
Unknown W. Brackets
6282f8b05f
softgpu: Expand texture coords to include q.
...
We'll need this to correctly project.
2022-09-26 17:13:14 -07:00
Unknown W. Brackets
8376176b2f
softgpu: Split clippos out of rasterization vert.
...
We don't use it, except w, at all in rasterization, so no need to keep it
in the bin queue.
2022-09-26 16:50:40 -07:00
Unknown W. Brackets
88b3b26ed3
softgpu: Cache reused indexed verts.
...
This happens a lot for spline/bezier, so can significantly speed up curve
heavy scenes. Isn't necessarily that common otherwise, though.
2022-09-22 18:27:59 -07:00
Unknown W. Brackets
6877ff1af2
softgpu: Fix state/continuation for imm prims.
2022-09-18 06:16:26 -07:00
Unknown W. Brackets
596b07bd2e
softgpu: Support fog and color1 on imm verts.
2022-09-18 06:16:26 -07:00
Unknown W. Brackets
35ba01e01f
softgpu: Refactor imm draws to bypass vert read.
2022-09-18 06:16:25 -07:00
Unknown W. Brackets
de080e2594
softgpu: Simplify vertex range culling.
...
The previous logic was harder to understand and easier to get wrong.
Just drop them when clipping the primitive.
2022-09-18 06:16:25 -07:00
Unknown W. Brackets
028a341cc8
softgpu: Explicitly flush on sync and output.
...
We could in theory skip flush on FinishDeferred, and allow some CPU/GPU
overlap. If we did, we'd still want to flush at these times.
2022-09-18 06:16:25 -07:00
Unknown W. Brackets
8371091734
softgpu: Force correct alignment on 32-bit.
2022-09-12 22:15:02 -07:00
Henrik Rydgård
2791ab3226
Merge pull request #16011 from unknownbrackets/softgpu-rect
...
Detect more triangles as rectangles in softgpu
2022-09-12 08:35:13 +02:00
Unknown W. Brackets
ce4fee7373
softgpu: Refactor triangle cull processing.
2022-09-11 22:39:32 -07:00
Unknown W. Brackets
8a6e8066bf
softgpu: Store vertex colors as packed RGBA8.
...
No need to keep it expanded at 4x the space for both colors.
2022-09-11 18:41:06 -07:00
Unknown W. Brackets
8c55e18ea8
softgpu: Switch vert continue buffer to members.
...
Better this than static. May be easier to handle imm prims correctly.
2022-09-11 08:54:34 -07:00
Unknown W. Brackets
88e8f95293
softgpu: Flush on transfer to pending tex read.
...
Potentially could use these for self-render, but so far we should be
detecting that so leaving it alone.
2022-08-20 23:22:21 -07:00
Henrik Rydgård
e6403d7157
Split GetPointer into two versions, to help with const correctness
2022-07-24 13:26:19 +02:00
Unknown W. Brackets
1bc3acf2ed
softgpu: Use a const for subpixel screenpos factor.
2022-02-19 21:03:49 -08:00
Unknown W. Brackets
a66377fdf1
softgpu: Remove offset from screenpos.
...
This simplifies tighter calculations, and reduces the common magnitudes
we'll be dealing with.
2022-02-19 20:38:44 -08:00
Unknown W. Brackets
61e30e8f8b
softgpu: Fix cull in throughmode.
...
Was only an issue for triangles used to draw rectangles, but caused our
test to fail.
Also move a test that was failing due to an outdated prx to passing.
2022-01-25 19:07:33 -08:00
Unknown W. Brackets
76f9103e97
softgpu: Add a table and initial dirty flags.
...
Not actually using the dirty flags to skip state, but have moved to
Execute_* functions and everything else like other graphics backends.
2022-01-23 08:08:40 -08:00
Unknown W. Brackets
c0c3f7284a
softgpu: Avoid flush texturing from stride.
...
This generally detects overlap more accurately using a dirty rectangles
approach. Also detects render to self much more accurately, including
with depth.
2022-01-20 18:39:01 -08:00
Unknown W. Brackets
3e4d768e7a
softgpu: Pack vertexdata a bit better.
...
This reduces the BinItem size by 15%.
2022-01-19 23:17:09 -08:00
Unknown W. Brackets
12a4c63fc7
softgpu: Precompute state for vertex transform.
...
Doesn't help a ton, but with lots of verts can improve a percent or two.
2022-01-16 21:31:52 -08:00
Henrik Rydgård
bdc69f5171
Merge pull request #15317 from unknownbrackets/softgpu-lighting
...
softgpu: Precompute lighting parameters
2022-01-17 01:06:35 +01:00
Unknown W. Brackets
2797e035df
softgpu: Precompute lighting parameters.
...
In many cases, games use lighting just for diffuse or something, this
helps skip what's not needed too. Good improvement in a scene from a
Naruto game.
2022-01-16 11:27:53 -08:00
Unknown W. Brackets
d95475e021
softgpu: Expose flush reasons/times in debug stats.
2022-01-16 11:27:42 -08:00