Commit Graph

9129 Commits

Author SHA1 Message Date
Henrik Rydgård
c6c0d0bf42 Android memstick folder moves: Do recursive moves if in the same device. Drastically faster. 2024-01-22 16:26:29 +01:00
Henrik Rydgård
6ae9d42516 Preparations for reworking the memstick folder move functionality 2024-01-22 15:56:07 +01:00
Henrik Rydgård
0bf7a98aff Replace DrainAndBlockCompileThreads with StopThreads, and same for resuming. 2024-01-22 11:06:50 +01:00
Henrik Rydgård
103d8b1019 Don't apply smart 2d texture filter to video. 2024-01-18 23:38:44 +01:00
Henrik Rydgård
74f5be02a1 GameInfo: Try to reduce the locking a bit. 2024-01-18 22:52:56 +01:00
Henrik Rydgård
d45f95e304 Limit to Windows to fix linker error 2024-01-18 16:08:23 +01: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
e908034ad3 Revert back to the old way of fitting into 16:9: Crop one line at the top and bottom
I seem to have switched to a stretch at some point, which isn't ideal and can be
achieved anyway with the stretch option. A two-line crop (1 at top, 1 at bottom)
is generally the better option.

There's now also a hidden ini setting to turn it off. I might be
convinced to add it as a real setting once I figure out a good name for
it. The setting:

```ini
[Graphics]
DisplayCrop16x9 = True
```

Fixes #18693
2024-01-15 22:04:42 +01:00
Henrik Rydgård
dac4c7adb0 Add checks against overrunning the index buffer space 2024-01-15 10:25:18 +01:00
Henrik Rydgård
db94b0b696 Pass the limit on the number of indices to generate to BuildDrawingParams. 2024-01-15 10:09:04 +01:00
Henrik Rydgård
cf5d76faf5 Continue replacing 'maxIndex' with 'numDecodedVerts'. Not an ideal name but better. 2024-01-14 23:41:05 +01:00
Henrik Rydgård
4360fe786c Add a setting for smart 2D texture filtering 2024-01-12 11:10:53 +01:00
Henrik Rydgård
8de7a97883 Check small triangle draws in through-mode for pixel mapping too 2024-01-11 14:32:52 +01:00
Henrik Rydgård
09d8bc5c43 Don't override "Linear"-forced texture filtering 2024-01-11 12:56:03 +01:00
Henrik Rydgård
e3841ddb4a Accept 1D stretch as pixel mapped 2024-01-11 12:56:03 +01:00
Henrik Rydgård
341fe04f4b Apply nearest filter for pixel-mapped draws 2024-01-11 12:56:03 +01:00
Henrik Rydgård
944b3c5be5 Add pixel mapping detection for through mode RECT primitives 2024-01-11 12:56:03 +01:00
Henrik Rydgård
6e12465dc4 Move through-mode UV scaling for rects from Transform to ExpandRectangles 2024-01-11 12:56:03 +01:00
Henrik Rydgård
0b6ea4b2e5 Use the Tokimeki / old Juiced 2 method for Breath of Fire III
Allows us to delete a bunch of complex code.
2024-01-11 10:44:13 +01:00
Henrik Rydgård
b4fe03de8b Better solution, still pretty much optimal. 2024-01-10 18:14:59 +01:00
Henrik Rydgård
d0817c4c0a Vulkan: Fix trying to compare uninitialized parts of packed descriptors
Found by Valgrind.

Other minor cleanup, too.
2024-01-10 12:10:20 +01:00
Henrik Rydgård
a6f041568b Allow merging framebuffers vertically like the old Juiced 2 fix.
Fixes Tokimeki Memorial 4 rendering.

Fixes #6379, see comments.
2023-12-30 22:40:07 +01:00
Unknown W. Brackets
80bd328a9d
Merge pull request #18638 from hrydgard/more-tex-replacement-details
Fix two minor tex replacement issues
2023-12-29 10:21:43 -08:00
Henrik Rydgård
daa9fab32a Don't try to replace textures if there's just an empty TEXTURES/{GAMEID} folder. 2023-12-29 19:06:43 +01:00
Henrik Rydgård
3ffcf267cb Allow replacing mip levels of a texture even without a ini file. Probably niche. 2023-12-29 19:06:20 +01:00
Henrik Rydgård
46b25d20a4
Merge pull request #18637 from unknownbrackets/riscv-more
Add some more RISC-V extensions to emitter
2023-12-29 19:03:49 +01:00
Unknown W. Brackets
d6ce03e1db Audio: Correct log function name. 2023-12-29 09:42:23 -08:00
Unknown W. Brackets
15cb782f85 riscv: Implement Zfa encoding.
Not yet enabled/detected.
2023-12-29 09:42:23 -08: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
f22249cef5 Reject zero-vertex-count draws.
I thought all the code was safe against it, but it isn't.
2023-12-29 14:09:45 +01:00
Henrik Rydgård
126d88ecfc Back out clearly inconsequential/useless .reserve() calls 2023-12-29 08:27:56 +01:00
Henrik Rydgård
acbd32c5f1 Fix GE frame dumps, no longer produces only 1kb files.
Broke in ca94de8d4b
2023-12-28 20:27:32 +01:00
Henrik Rydgård
80c6dbfdfe Minor: bugfix in texreplacer, darker alpha chessboard in texture viewer 2023-12-28 19:46:36 +01:00
Henrik Rydgård
3895cfff74 Add "Analog trigger threshold" setting, for conversion of analog trigger inputs to digital button inputs. 2023-12-28 13:36:03 +01:00
Henrik Rydgård
822ebf9dfb Use the correct culling function in the fast draw-continuation loop 2023-12-28 10:40:56 +01:00
Henrik Rydgård
faef4aae2c Add a comment on how to fix the actual bug. 2023-12-25 17:39:28 +01:00
Henrik Rydgård
c2963c7941 Fix issue where "Texture replacement pack activated" wasn't displayed without an ini 2023-12-25 13:25:28 +01:00
Henrik Rydgård
126d70cf9d Improve handling of texture packs without .ini files (not recommended, but exists) 2023-12-25 13:25:28 +01:00
Henrik Rydgård
849000a958 Texture replacer: Break out two functions from LoadIniValues 2023-12-25 13:25:27 +01:00
Henrik Rydgård
0f3dca5cea Revert a bad "optimization" I made in #18587 2023-12-25 12:03:09 +01:00
Henrik Rydgård
cf81ae1b4e
Merge pull request #18599 from hrydgard/tactics-ogre-eliminate-readback
Tactics Ogre: Remove a redundant GPU readback operation
2023-12-22 22:51:21 +01:00
Henrik Rydgård
8601c5a3bc
Merge pull request #18596 from hrydgard/more-control-refactor
More control refactor
2023-12-21 13:40:41 +01:00
Henrik Rydgård
437b292b7d Tactics Ogre: Remove a redundant readback operation it performs a lot. 2023-12-21 12:37:34 +01:00
Henrik Rydgård
e488189723 Inline UpdateUVScaleOffset 2023-12-21 12:10:10 +01:00
fp64
d35c10beb6 Fix texture upscaler bug
Was not actually affecting anything, since this path is not used.
Still better fix it, for correctness sake.
2023-12-21 11:55:45 -05:00
Henrik Rydgård
ac208505a5 Remove bad debug assert 2023-12-21 11:48:52 +01:00
Henrik Rydgård
a9553f4eef
Merge pull request #18586 from hrydgard/indexgen-opt
DrawEngine: Avoid decoding indices when we don't need them.
2023-12-20 15:28:48 +01:00
Henrik Rydgård
e9736186aa
Merge pull request #18587 from hrydgard/minor-vshader-opt
Minor lighting optimization in vshader
2023-12-20 15:27:01 +01:00
Henrik Rydgård
dd1396e2fd
Merge pull request #18581 from GermanAizek/lower-scope
Reduced lower scope for local objects
2023-12-20 14:53:36 +01:00
Henrik Rydgård
2238fab601 Minor lighting optimization in vshader 2023-12-20 14:47:49 +01:00
Henrik Rydgård
61acce195c Avoid decoding indices when we don't need them. 2023-12-20 14:25:19 +01:00
Herman Semenov
ca94de8d4b [GPU/Common/DX9/GLES/Software] Object out of scope optimization for better codegeneration (lower level scope) 2023-12-20 12:34:34 +03:00
Henrik Rydgård
bca83c0baf Buildfix 2023-12-19 14:44:21 +01:00
Henrik Rydgård
f86189c951 Show vertex decoders separately in profiles 2023-12-19 12:25:54 +01:00
Henrik Rydgård
50bcb2a77a Add "Disable culling" as a speedhack for experimentation
Range culling (which we'll just call culling in the setting
name) still is problematic enough that it can be useful to have this
way to turn it off as an escape route. Since disabling it can break some
games like famously TOCA, it needs to be under speedhacks, though likely
the performance change is minimal.

See for example #17061
2023-12-18 13:13:44 +01:00
Henrik Rydgård
02eb10649d Improve checks 2023-12-18 09:12:44 +01:00
Henrik Rydgård
b2729507a1 Assorted debugger-related fixes
Also fixes issue where the rewind machinery would run even during pause.
2023-12-18 00:21:53 +01:00
Henrik Rydgård
bbcaeb9d13
Merge pull request #18557 from GermanAizek/reserve-add
Using reserve in different places PPSSPP
2023-12-15 12:28:21 +01:00
Herman Semenov
0748ce610f [GPU/Common/D3D11/Directx9/GLES/Vulkan] Using reserve if possible 2023-12-15 14:08:22 +03:00
Henrik Rydgård
acbc9dc94f DXT5: Fix decoding of alpha channel for textures with a non-mod-4 width. 2023-12-15 10:27:24 +01:00
Henrik Rydgård
748193f227 Fix issue with misdetection of framebuffer copies.
Fixes #18512
2023-12-14 23:16:21 +01:00
Henrik Rydgård
155222145a
Merge pull request #18550 from GermanAizek/fix-memsize-type
[Common Data Net/Core Debugger HLE/GPU Debugger] Fixed reduction data type size to strict 32-bit integer
2023-12-14 17:51:08 +01:00
Herman Semenov
309f0d97f2 [Common Data Net/Core Debugger HLE/GPU Debugger] Fixed reduction data type size to strict 32-bit integer 2023-12-14 19:26:10 +03:00
Henrik Rydgård
ebaebf5945
Merge pull request #18546 from GermanAizek/make-smart-ptr
[Common Data/Core Dialog HLE/GPU Common Vulkan] Optimize create smart pointers using C++17 std::make_*
2023-12-14 14:02:55 +01:00
Henrik Rydgård
b78c7ad470
Merge pull request #18545 from GermanAizek/const-ref-params
Objects in function parameters have been replaced with constant references
2023-12-14 13:49:33 +01:00
Herman Semenov
08070e7f31 [Common Data/Core Dialog HLE/GPU Common Vulkan] Optimize create smart pointer using C++17 std::make_* 2023-12-14 15:44:16 +03:00
Herman Semenov
3d422b11c0 [GPU Common Vulkan/UI/Windows Debugger] Added const reference for function params 2023-12-14 14:23:31 +03:00
Henrik Rydgård
a8b8e44de1 Increase texture size limit to 1024. It's actually used by FF3. 2023-12-13 22:18:54 +01:00
Henrik Rydgård
0795f6b9e8
Merge pull request #18539 from hrydgard/speedhack-readback-multi-choice
Add multiple choices to the speedhack "Disable GPU readback"
2023-12-13 18:18:44 +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
e62614498e Buildfix mac (name collision with NO...) 2023-12-13 16:48:07 +01:00
Henrik Rydgård
caec201c4d Make "Skip GPU readbacks" a multi-choice option, for easier experimentation by users 2023-12-13 16:18:44 +01:00
Henrik Rydgård
b4c61acbf3
Merge pull request #18534 from hrydgard/vulkan-16bit-format
Use the universally supported Vulkan "565" 16-bit texture format
2023-12-12 19:13:34 +01:00
Henrik Rydgård
6d3c34ecd5 Eliminate inf values resulting from depth range computation.
Fixes #17981
2023-12-12 18:48:22 +01:00
Henrik Rydgård
f2da5dafd1 Use the universally supported Vulkan "565" 16-bit texture format
Previously mistakenly used the BGR format instead of the RGB.

Probably won't make much of a difference for anything, but may affect #17881
if my theory about it is correct.

Also minor cleanups.
2023-12-12 18:19:29 +01:00
Herman Semenov
de80cc3883 Using reserve if possible 2023-12-12 15:13:43 +03:00
Henrik Rydgård
1a02995942
Merge pull request #18520 from hrydgard/opengl-render-fix
OpenGL: Fix some confusion between gpu->BeginHostFrame and gpu->BeginFrame
2023-12-11 23:44:33 +01:00
Henrik Rydgård
33e48e9675 OpenGL: Fix some confusion between gpu->BeginHostFrame and gpu->BeginFrame, fixing black screen 2023-12-11 23:05:37 +01:00
Henrik Rydgård
3902c85f7f Enable texture replacement filtering overrides even if file is missing 2023-12-11 20:20:35 +01:00
Henrik Rydgård
8d8ff5886b Fix issue where nothing had started a render pass when we wanted to clear the screen. 2023-12-11 13:06:15 +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
aca3bbc9a0 DrawEngine: Remove the confusing MaxIndex accessor, replace with directly reading numDecodedVerts_ 2023-12-10 11:58:47 +01:00
Henrik Rydgård
904ce4f7e1 Quickfix regression in Outrun 2023-12-09 18:32:26 +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
Henrik Rydgård
6a7ef83f4b NEON-optimize the culling 2023-12-09 15:55:51 +01:00
Henrik Rydgård
5b44e25150 SSE-optimize the frustum culling 2023-12-09 15:55:51 +01:00
Henrik Rydgård
62c936babf Flip the cull plane data around to avoid transforming each vertex multiple times. 2023-12-09 15:55:51 +01:00
Henrik Rydgård
a043962447 World space planes 2023-12-09 15:55:51 +01:00
Henrik Rydgård
dbf796bb66 Fastcull: SSE/NEON-optimize 16-bit position conversion 2023-12-09 15:55:51 +01:00
Henrik Rydgård
89d8ef87ec Use a less accurate but faster frustum cull for the general draws. 2023-12-09 15:55:51 +01:00
Henrik Rydgård
0905b6a5ad Frustum-cull small draws
Some games do a poor job of culling stuff, and some transparent
sprites can be very expensive if they cause a copy.
Skipping them if outside the viewport makes sense in that case.

One example are the flame sprites in #17797 .

Additionally, we should be able to cull through-mode draws easily, this
one doesn't even try.
2023-12-09 15:55:51 +01:00
oltolm
6e609342d6 fix ASAN error in Vec2<float>::Length() 2023-12-08 19:50:47 +01:00
Henrik Rydgård
8dab823936
Merge pull request #18484 from hrydgard/mlb-fix
Fix frozen pitch meters in MLB series games - we were not hashing enough texture data
2023-12-07 12:12:35 +01:00
Henrik Rydgård
877324c978 Add comment about swizzling to the texture replacer hash 2023-12-07 11:01:51 +01:00
Henrik Rydgård
443a882041 Fix the size calculation when hashing small swizzled textures 2023-12-07 10:45:31 +01:00
Henrik Rydgård
36a2174ac0 Vulkan: Add indicator of swizzle mode to texture debug names 2023-12-07 10:35:04 +01:00
Henrik Rydgård
7bf8023dce Don't do the texture size check for the built-in font texture.
Fixes #18483
Fixes #18479
2023-12-07 09:01:24 +01:00
Henrik Rydgård
b90b6268ec
Merge pull request #18478 from hrydgard/block-transfer-to-depth
Handle block transfers from RAM to depth buffers.
2023-12-06 10:12:31 +01:00
Henrik Rydgård
26a51191b3 Cleaner solution to previous commit 2023-12-06 09:54:03 +01:00
Henrik Rydgård
8588b11a6a Rename MayIntersectFramebuffer to MayInteresectFramebufferColor 2023-12-06 09:42:44 +01:00
Henrik Rydgård
88f2657bb1 Allow block transfers from RAM to depth buffers.
Reuses the existing compat flag BlockTransferDepth.

I do aim to remove that compat flag in the future, it's probably not
even necessary here, it's just that general depth block transfers were
already gated on it.

Fixes #17878
2023-12-06 00:29:09 +01:00
Henrik Rydgård
e2480b9fa0 D3D9: Apply a half-pixel offset in 2D shader draws. Makes Tantalus games less broken (but still broken) 2023-12-05 14:09:14 +01:00
Henrik Rydgård
64a810f9bf VertexDecoder: Minor optimization for CPUs not supporting SSE4. 2023-12-05 01:23:09 +01:00
Henrik Rydgård
6b8ec972fb A couple of warning fixes (real issues though small) 2023-12-05 01:12:42 +01:00
Henrik Rydgård
5373b8c5b3 Fix double-free problem in "low-memory" texture fallback (Vulkan) 2023-12-04 19:47:20 +01:00
Henrik Rydgård
fb8ad0c33a Very minor cleanup in display list processing 2023-12-04 18:56:06 +01:00
Henrik Rydgård
fd73522efc Changing UV scale/offset requires us to stop "extending" prims
This is because we currently can't change these scales mid-decode, so we
need to break up the collection there. Note that this still won't cause
a full flush, just that the new extra-efficient tristrip merging can't go
through these commands.
2023-12-03 19:21:55 +01:00
Henrik Rydgård
7f67a10543 Texture replacement: Prioritize ini file lines over files in the "root".
This reverts back to the old behavior, as mentioned in #18465
2023-12-03 00:18:39 +01:00
Henrik Rydgård
d584162e06
Merge pull request #18462 from hrydgard/framebuffer-listing-overlay
Framebuffer listing overlay
2023-12-02 18:51:33 +01:00
Henrik Rydgård
6d977b4a12 Remove unnecessary struct FramebufferInfo 2023-12-02 13:56:18 +01:00
Henrik Rydgård
4ef54169af Add a compat.ini setting to allow delayed GPU readbacks, for experimentation. 2023-12-02 11:34:59 +01:00
Henrik Rydgård
b636356f36 copy: Reverse the order of the y and seq heuristics 2023-12-01 20:40:12 +01:00
Henrik Rydgård
cef17589d2 Move the oversize copy detection to a better location (less false positive) 2023-12-01 00:30:06 +01:00
Henrik Rydgård
d9365a6df1 FramebufferCopy: New framebuffer candidate sorting, similar to block transfer detection.
The previous attempt was simply flawed.
2023-12-01 00:10:16 +01:00
Henrik Rydgård
7920e86098 Add heuristic, fixing video flicker in Naruto UNH 2 caused by copy to wrong target. 2023-11-30 22:19:52 +01:00
Henrik Rydgård
737ec3e90b NEON buildfix 2023-11-28 18:40:10 +01:00
Henrik Rydgård
4ec2d76bc9 NEON-optimize matrix tranposes 2023-11-27 23:57:26 +01:00
Henrik Rydgård
45aae7b9da ARM32: Backport a lot of previously 64-bit-only NEON optimizations to ARM32. 2023-11-27 23:51:10 +01:00
Henrik Rydgård
dae758e5f4 Fix some bugs and mistakes found by Nemoumbra through static analysis 2023-11-26 13:43:11 +01:00
Henrik Rydgård
aec0606ba4 Optimize the bounding box code for more vertex formats 2023-11-26 13:40:37 +01:00
Henrik Rydgård
cb9c6dc661
Merge pull request #18418 from hrydgard/simplify-input-layout
thin3d/backends: Remove code that pretended that we supported multiple vertex streams
2023-11-13 12:51:09 +01:00
Henrik Rydgård
d891aaf9cd Remove code that pretended that we supported multiple vertex streams
Don't really see that we'll have much use for this feature, so simplify
it away. Only single vertex stream data is now supported by the thin3d
API.
2023-11-13 01:15:28 +01:00
Henrik Rydgård
77825484a0 If available, use 16-bit texture formats for MakePixelTexture when appropriate.
Optimization for God of War on low-end platforms. Avoids calling a color
conversion function that's currently only SIMD-optimized on x86, so will
also benefit ARM a little bit.
2023-11-12 15:58:03 +01:00
Henrik Rydgård
49f5da370a Simplify the logic in MakePixelTexture a bit 2023-11-12 11:19:45 +01:00
Henrik Rydgård
cc6f9a73ca Oops, fix for previous commit. And minor optimization. 2023-11-12 01:32:02 +01:00
Henrik Rydgård
632fa1c9d6 Cache and hash data for DrawPixels.
We already had a cache to reuse texture objects so just
opportunistically reuse them when easy to do so.
2023-11-11 19:58:12 +01:00
Henrik Rydgård
dd032dc533 Delete two unused structs 2023-11-11 10:55:54 +01:00
Henrik Rydgård
4f2f1c4392 Tilt: Fix some edge cases leading to division by zero and similar. 2023-11-09 19:14:31 +01:00
Henrik Rydgård
48a1348352 Move a var for clarity 2023-11-01 21:30:04 -06:00
Henrik Rydgård
ee6ffac28e Ignore triangle strips with less than 3 vertices.
Should fix the new issue reported in #18273
2023-11-01 21:28:37 -06:00
Henrik Rydgård
618589abd8
Merge pull request #18362 from unknownbrackets/softgpu-zmirror
softgpu: Point depthbuf at the first VRAM mirror
2023-10-15 22:53:00 +02:00
Unknown W. Brackets
f7f05072fe softgpu: Point depthbuf at the first VRAM mirror. 2023-10-15 10:33:05 -07:00
Henrik Rydgård
f842f16fbe Inline "DecodeVertexToPushPool" for ease of change. 2023-10-12 11:58:49 +02:00
Henrik Rydgård
12a98baf59 Cleanups, make the various SubmitPrim implementations more similar 2023-10-12 11:58:48 +02:00
Henrik Rydgård
f769b2c8a3 Remove unused functionality from descpool 2023-10-11 12:29:57 +02:00
Henrik Rydgård
0ad2827e14 Vulkan: Fix synchronization when shutting the GPU down in-game. 2023-10-11 12:27:39 +02:00
Henrik Rydgård
183d49329a Allow writing directly into the packed descriptor buffer, saving a memcpy. 2023-10-11 11:02:17 +02:00
Henrik Rydgård
2ac14f555d Remove VulkanPushBuffer (keeping our newer replacement VulkanPushPool) 2023-10-11 09:06:24 +02:00
Henrik Rydgård
e4ea4831e9 Delete the vertex cache option from the code. 2023-10-10 15:43:43 +02:00
Henrik Rydgård
078018a943 Move the clockwise calculation out of DrawEngineCommon 2023-10-10 13:16:34 +02:00
Henrik Rydgård
82606b6eb2 Move the clockwise calculation out of the AddPrim loop 2023-10-10 13:00:57 +02:00
Henrik Rydgård
3d949b080d Prepare VulkanDescSetPool for block allocation 2023-10-10 09:14:10 +02:00
Henrik Rydgård
9c1c09ff5c Remove commented out code 2023-10-10 09:02:35 +02:00
Henrik Rydgård
ba4d1668ce Don't forget to update descCount in tess mode 2023-10-10 09:02:35 +02:00
Henrik Rydgård
af47ad035d Also use the new descriptor mechanism for in-game 2023-10-10 09:00:29 +02:00
Henrik Rydgård
35fcec1e4b Another small fix, helps Toca series games. 2023-10-10 02:13:25 +02:00
Henrik Rydgård
24409f6f94 Additional check fix 2023-10-09 21:15:17 +02:00
Henrik Rydgård
f6ba4ee4de Only support extending triangle-based draw calls. Fixes Crazy Taxi. 2023-10-09 21:14:00 +02:00