Commit Graph

127 Commits

Author SHA1 Message Date
Lin Runze 5b406f00fd loongarch: Initial VertexJIT support and bug fix 2025-07-17 00:33:56 +08:00
Henrik Rydgård 9ecc135601 Vertex decoder C++ fallbacks: Make sure to never read from the destination
This can have devastating effects on performance on some architectures.

Will help, but not fix, #20171 on some hardware (there's more
optimization work that needs doing).
2025-05-26 11:18:45 +02:00
Henrik Rydgård 4e0b6ac3ec More misc cleanup 2025-05-14 15:14:03 +02:00
Henrik Rydgård dd38e8d012 GPU constify 2025-05-14 09:39:14 +02:00
Henrik Rydgård c6691de64c Remove excessive error reporting 2025-03-02 02:28:42 +01:00
Henrik Rydgård 449e3e1360 Very minor soft transform optimization 2024-12-28 18:45:03 +01:00
Henrik Rydgård c91169e702 Restore removed <algorithm> includes.
Turns out these were needed after all. For some reason, on Windows and
Mac, <algorithm> gets auto-included by something else so I don't notice
when it's missing, and MSVC's include dependency tracker doesn't see it
either.
2024-12-19 09:53:07 +01:00
Henrik Rydgård df6ed8cfc9 Do some cleanup of #includes in GPU 2024-12-18 13:57:26 +01:00
Henrik Rydgård e74101a2fb applySkinInDecode belongs in the VertexTypeID, not in the options. 2024-12-17 18:24:18 +01:00
Henrik Rydgård 2c283fbb07 Minor cleanups, crashfixes 2024-10-14 23:57:19 +02:00
Henrik Rydgård 42c32c5afc VertexDecoder: Don't read loop counts from memory. Improves codegen 2024-09-10 17:53:19 +02:00
Henrik Rydgård 43c68c4277 VertexDecoder: Remove member function pointers from decoding 2024-07-22 14:06:15 +02:00
Henrik Rydgård fd9daf7594 Fix some minor issues found by --sanitize. Add --sanitizeub.
Unfortunately the ub (undefined behavior) sanitizer has some bugs, it doesn't
understand pointers to member functions, so can't use it in-game (due to the
vertex decoder).

Thanks Nemoumbra for the reminder.
2024-07-22 11:37:18 +02:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Henrik Rydgård 8d6e96d04e Use binary search to find IR block offsets 2024-06-07 09:28:27 +02:00
Henrik Rydgård c794f4bd41 Add an unrelated comment and some casts 2024-06-05 08:35:09 +02:00
Henrik Rydgård 6ce087430b JIT-less vertex decoder: SSE/NEON-optimize ComputeSkinMatrix 2024-06-04 12:29:16 +02:00
Henrik Rydgård 9ac7054b01 Vertex decoder (non-JIT): Optimize 16-bit color decoders. 2024-06-04 10:35:31 +02:00
Henrik Rydgård 7a32507ab7 Add a decode counter to vertex decoders in _DEBUG mode 2024-06-02 10:25:05 +02:00
Henrik Rydgård fb599cd0a6 Only use the optimized decoders if SSE or NEON is available. 2024-05-11 14:18:42 +02:00
Henrik Rydgård 4a66f8978b Fix the GoW optimized vertex decoder, add NEON optimizations 2024-05-11 13:27:11 +02:00
Henrik Rydgård bafff7f5db Temporarily disable the custom GoW vertex decoder, it needs some work. 2024-05-11 11:11:48 +02:00
Henrik Rydgård 3526416173 Add another handwritten vertex decoder 2024-05-11 10:00:39 +02:00
Henrik Rydgård 81f1b3fd95 Make handwritten vertex decoders work with non-compiled vertex decoding 2024-05-11 10:00:35 +02:00
Henrik Rydgård 3e11e54405 Remove obsolete flag 2024-05-11 10:00:35 +02:00
Herman Semenov b57dab2812 [GPU] Make static and const methods if possible 2024-04-05 17:04:31 +03:00
Henrik Rydgård e3177ac870 Make some global string pointers const, not just the strings.
Minor cleanup.
2023-12-29 14:09:45 +01:00
Henrik Rydgård f86189c951 Show vertex decoders separately in profiles 2023-12-19 12:25:54 +01:00
Herman Semenov 315340fc62 Using const reference for C++17 range-based loop and freq used objects 2023-12-13 17:33:01 +01:00
Henrik Rydgård 71aaad23fb Fix issue with zero-vertex draw calls. Though, should maybe just filter them out earlier. 2023-12-10 12:21:07 +01:00
Henrik Rydgård d4703e9534 Decoded position format is always the same 2023-10-06 15:39:58 +02:00
Henrik Rydgård 92ffef2626 Remove some state from IndexGenerator, fix bugs. Mostly works except vertex cache. 2023-10-03 11:01:37 +02:00
Henrik Rydgård 45bc4d8750 Make GetIndexBounds friendlier to autovectorization. Works on x86 at least. 2023-09-24 12:15:04 +02:00
Unknown W. Brackets 622c69dbb9 x86jit: Expose option to select new IR based jit. 2023-08-20 22:28:54 -07:00
Henrik Rydgård bee2400230 Merge pull request #17769 from unknownbrackets/vertexjit-debug
Add compilation-enabled vertexjit compare tool
2023-07-24 09:39:52 +02:00
Unknown W. Brackets 311c78f26b GPU: Make the vertexjit diff smarter. 2023-07-23 14:28:45 -07:00
Unknown W. Brackets b6f11d6dae GPU: Add a little tool to debug vertexjit.
Although it's too exacting right now, it still helps.
2023-07-23 14:28:45 -07:00
Unknown W. Brackets 312dcfc1c5 GPU: Correct UV scale for non-jit. 2023-07-23 14:25:43 -07:00
Henrik Rydgård 01cea7f088 Pass uvScale in as an argument to the vertex decoder
Cleaner than overwriting/restoring gstate_c.uvScale in the decoder
loop. A small cleanup I've been wanting to do for ages.

Expecting a negligble perf boost if any.
2023-06-12 20:25:18 +02:00
Henrik Rydgård 80e47b7bd3 Only dirty the uniform UVSCALEOFFSET when really needed
Broken out from #17479

With OpenGL, greatly reduces the amount of glUniform4fv calls in many games (and
similar in the other backends).
2023-05-25 15:00:57 +02:00
Unknown W. Brackets 9c21184352 vertexjit: Simplify CPU core check.
This also avoids allocating the memory we won't use if it's off.
2023-02-28 07:03:12 -08:00
Unknown W. Brackets 8d4007ce3f Vulkan: Force align verts to 4 on Apple devices. 2023-01-18 07:24:18 -08:00
Unknown W. Brackets 77849d3eed riscv: Add disassembler.
From https://github.com/anthony-coulter/riscv-disassembler.
Modified slightly to pull in less headers in the h, prefix funcs.
2023-01-01 10:28:53 -08:00
Unknown W. Brackets 49f6c461ad Reporting: Fix some header includes.
Particularly in Common, avoid including Core/Reporting.h.
2022-12-27 14:58:20 -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 66472c39ce GPU: Use skinned position always in bounding check.
Meanwhile, move to a flag on decoder options instead of global check.
2022-11-06 08:23:31 -08:00
Unknown W. Brackets ca248e1201 softgpu: Fix s8 primitives in throughmode.
Also always cull no-position verts, hardware too.  Matches tests.
2022-09-18 07:46:18 -07:00
Unknown W. Brackets 4889d5285d vertexjit: Use consistent skinInDecode.
Just a little cleanup.
2022-09-10 21:54:04 -07:00
Unknown W. Brackets 470d2f0f4e vertexjit: Remove unused ReadUV() cases. 2022-09-01 23:33:52 -07:00
Unknown W. Brackets f2d5d668a5 vertexjit: Remove unused ReadPos() cases. 2022-09-01 23:33:52 -07:00