Commit Graph

50 Commits

Author SHA1 Message Date
Henrik Rydgård 7d987cd78b Make fast_matrix_mul_4x4 inlineable 2026-01-30 14:10:32 +01:00
Eric Warmenhoven 58eaf56c5e libretro: build fix
gcc9 and the version of msvc19 that the libretro builders use don't
have _mm_storeu_si32. Using _m_cvtsi128_si32 followed by memcpy is
picked up by compilers that support _mm_storeu_si32 as being the same
and they generate the same assembly, so this is no harm to them.
2026-01-28 00:15:35 -05:00
Henrik Rydgård 47f6b9975e Optimize the color alpha computation for color morph 2026-01-20 13:51:24 +01:00
Henrik Rydgård 3378faca5e Optimize morph code (non-JIT vertex decoders) 2026-01-20 13:51:24 +01:00
Henrik Rydgård a8f89e1544 Correct rounding in StoreConvertToU8, correct Vec4F32::Store3. 2026-01-20 13:51:24 +01:00
Henrik Rydgård fc09669ba7 Add DualSense support. Remove trying to support bluetooth devices (not reliable without more work) 2025-07-03 11:11:34 +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 8907a4c001 More fixes, improve unit test 2025-02-06 10:26:46 -06:00
Henrik Rydgård fc0b1eef4c Fix 4x4 2025-02-06 10:26:46 -06:00
Henrik Rydgård 07e892e1a2 Fix some type mismatches in CrossSIMD.h that not all compilers complain about.
Fixes #19905
2025-02-01 10:30:02 -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 acd5b24924 Complete CrossSIMD non-simd fallback (although buggy, it seems). Minor ARM64 opt. 2025-01-28 10:54:43 +01:00
Henrik Rydgård 2aaa1e5379 CrossSIMD: Expand the no-simd path 2025-01-28 10:54:43 +01:00
Henrik Rydgård 74501b06b6 CrossSIMD: Add more no-simd fallback types 2025-01-28 10:54:43 +01:00
Henrik Rydgård 9d164b71fb Some new CrossSIMD operations 2025-01-28 10:54:43 +01:00
Henrik Rydgård 9ccf47a6b3 Fix type error in minor ARM64 optimization, which some compilers don't like.
Fixes #19905
2025-01-22 09:54:20 +01:00
Henrik Rydgård a5116e1590 Use vmaxvq_s32 to implement AnyZeroSignBit more efficiently on ARM64 2025-01-19 17:49:09 +01:00
Henrik Rydgård 206d4d1fea Implement the low-quality depth raster mode, default to it on Android/iOS.
I really can't tell much of a difference in practice...
2024-12-31 11:19:38 +01:00
Henrik Rydgård f85d7db5b1 Comment fixes, buildfix 2024-12-31 02:39:58 +01:00
Henrik Rydgård dee5fe6990 Fix issue in Midnight Club where Z now wrapped around at a distance, after removing the clamp. Might as well cull. 2024-12-31 02:30:05 +01:00
Henrik Rydgård f5cc41caab More CrossSIMD (breaking change) 2024-12-31 01:59:11 +01:00
Henrik Rydgård c3ac798545 More crosssimd 2024-12-31 01:59:08 +01:00
Henrik Rydgård ef934df0f2 Compute and cull by triangle area early before writing 4-groups of triangles 2024-12-29 01:21:16 +01:00
Henrik Rydgård e8786fc401 Cull 4-groups of triangles early 2024-12-29 01:12:53 +01:00
Henrik Rydgård 66926e28c1 Simplify / fix through mode triangles 2024-12-28 18:51:37 +01:00
Henrik Rydgård eec7853efe More SIMD: Add some matrix operations to CrossSIMD (#19773)
* More CrossSIMD functionality

* Use the new SIMD API for the matrix multiplies
2024-12-28 18:45:14 +01:00
Henrik Rydgård 8c069917b5 Depth raster optimizations: Merge viewport into projection matrix, prepare for further SIMD-ification (#19769)
* Remove some old redundant reports

* Fix scissor off by one

* More CrossSIMD

* Move the viewport scale out to the proj matrix

* DepthRaster: Also merge the viewport translation into the projection matrix.

* Depth raster: Do the triangle clipping in batches of 4 triangles

* Cleanup
2024-12-28 10:36:39 +01:00
Henrik Rydgård cc040ab251 Depth raster: Bugfix, minor opt (#19768)
* Correct two errors in CrossSIMD.h, thanks hiroyuki177

Fixes #19767

* DepthRaster: Merge offset into viewport X/Y
2024-12-26 20:23:52 +01:00
Henrik Rydgård 0e59cd7641 DepthRaster: Fix typo breaking LESS depth comparison mode on x86(64) 2024-12-24 23:26:32 +01:00
Henrik Rydgård 8e747dc948 CrossSIMD: Add a multiply-as-16bit function to Vec4S32. This can be implemented quickly on SSE2. 2024-12-22 18:53:10 +01:00
Henrik Rydgård 3bd2441f4a CrossSIMD: Add SwapLowerElements to Vec4F32 2024-12-22 10:32:16 +01:00
Henrik Rydgård bd3a252104 CrossSIMD: Add a simple operation 2024-12-21 21:21:40 +01:00
Henrik Rydgård 8cd86b47b5 AnyZeroSignBit arm fix, more crosssimd fixes. Now works on ARM. 2024-12-21 14:28:01 +01:00
Henrik Rydgård 5df88fc1aa Convert the rect implementation to CrossSIMD 2024-12-21 14:28:01 +01:00
Henrik Rydgård 399570e411 CrossSIMD: make the transpose function compatible with ARM32 2024-12-21 14:28:00 +01:00
Henrik Rydgård 2051d55c90 CrossSIMD: Add a bunch more functonality for use by the rasterizer 2024-12-21 14:28:00 +01:00
Henrik Rydgård 65692d036e CrossSIMD: possible buildfix? 2024-12-21 14:28:00 +01:00
Henrik Rydgård 0b009c10be CrossSIMD: Add reciprocal, clamp, swaplowerelements, etc 2024-12-21 14:28:00 +01:00
Henrik Rydgård 03b9f98055 Add more funcionality to CrossSIMD.h, like fast matrix mul and some conversion 2024-12-21 14:28:00 +01:00
Henrik Rydgård de45960420 Reformat CrossSIMD.h for easier editing. Add some new methods. 2024-12-21 14:28:00 +01:00
Henrik Rydgård c92b3b6521 Move prototype cross simd wrapper structs to CrossSIMD.h 2024-12-21 14:27:59 +01:00
Henrik Rydgård c5ad81e3d5 Add DepthRaster.cpp/h. Rasterize depth rectangles, some triangles 2024-12-21 14:27:53 +01:00
Henrik Rydgård 5326d87f9c Rename CrossSIMD to SIMDHeader, but also keep CrossSIMD.h (will have a future use) 2024-12-19 15:15:43 +01:00
Henrik Rydgård 45cf6d423e Buildfixes 2024-12-18 13:57:29 +01:00
Henrik Rydgård a6a189c24d An old version of android had strict JNI validation of UTF-8 strings enabled. Let's pass it. 2024-10-22 11:02:26 +02:00
Henrik Rydgård 531f145e0b Fix NEON compilation error on strict compilers. Fixes #18688 2024-01-18 10:38:30 +01:00
Henrik Rydgård aee8f62ed5 Buildfix (included from c file) 2024-01-11 14:59:54 +01:00
Henrik Rydgård 7e85d3d10a Disable the new culling on RISC-V for now. 2023-12-09 16:49:02 +01:00
Henrik Rydgård 4e2a1bf81c NEON: vcvtq can scale directly, no need for a mul by const. 2023-12-09 16:48:59 +01:00
Henrik Rydgård 99548be8a3 NEON culling: Use mla operations to shave off some more cycles. ARM32 compat. 2023-12-09 16:36:01 +01:00