Commit graph

9826 commits

Author SHA1 Message Date
James Rowe
e95bc52b3d Only check for sanitize_mul if theres a shader in the cache 2020-01-16 08:35:52 -07:00
James Rowe
43c9695bf9 Fix title bar 2020-01-15 23:52:41 -07:00
James Rowe
cf4125a6a5 Only load precompiled shaders if their sanitize_mul setting matches 2020-01-15 21:10:37 -07:00
James Rowe
6945b6539f Address review and update zstd 2020-01-15 19:58:34 -07:00
James Rowe
936094dd27 Log the number of entries in each cache 2020-01-15 19:58:34 -07:00
James Rowe
45bc5b465e Add a error log for unsupported configurations for disk cache 2020-01-15 19:58:34 -07:00
James Rowe
2d86bc6db5 Rename InvalidateTransferable to InvalidateAll to match what it does 2020-01-15 19:58:34 -07:00
James Rowe
7092ba8480 Only add shaders to precompiled cache if they are new 2020-01-15 19:58:34 -07:00
James Rowe
061a33477f Properly bind the shader sampler and uniform bindings 2020-01-15 19:58:34 -07:00
James Rowe
a20c81d593 Change VFS vector to regular vector 2020-01-15 19:58:34 -07:00
James Rowe
6f2756089d citra-sdl: Add Load Disk Resources 2020-01-15 19:58:34 -07:00
James Rowe
d418f0438d citra-qt: Load Disk Resources 2020-01-15 19:58:34 -07:00
James Rowe
d03d201482 Add GetRenderer to core 2020-01-15 19:58:34 -07:00
James Rowe
be52d3a7d0 Add missing changes from yuzu file_util 2020-01-15 19:58:34 -07:00
James Rowe
4e9ec4efd0 Add shader disk caching 2020-01-15 19:58:33 -07:00
James Rowe
ce3f8bf94e Add frontend settings 2020-01-15 19:58:33 -07:00
James Rowe
b5b6ce5fdc Add shader cache version generation 2020-01-15 19:58:33 -07:00
James Rowe
b5bc05738c Add settings for disk shader cache 2020-01-15 19:58:33 -07:00
James Rowe
8f67d6a444 Add ZSTD compression for precompiled cache 2020-01-15 19:58:33 -07:00
James Rowe
cd86c9b043
Merge pull request #5036 from leoetlino/bps
file_sys: Add support for BPS patching
2020-01-15 12:04:54 -07:00
James Rowe
45bff6ab58
Merge pull request #5033 from BreadFish64/fix_game_list
qt: do not use an invalid update smdh
2020-01-15 11:51:35 -07:00
James Rowe
3412b999ab
Merge pull request #5056 from jroweboy/master
Attempt to fix macOS build
2020-01-15 11:28:42 -07:00
James Rowe
f70262a7e0
Attempt to fix macOS build 2020-01-15 10:19:40 -07:00
James Rowe
01686f78fe
Merge pull request #5037 from leoetlino/thin-archives
CMake: Create thin archives on Linux
2020-01-01 14:29:43 -05:00
James Rowe
9d1909d4af
Merge pull request #5039 from BreadFish64/better_path_trimming
common/logging: don't use regex for path trimming
2020-01-01 14:25:44 -05:00
BreadFish64
b3beff0f4c common/logging: don't use regex for path trimming 2019-12-24 14:19:18 -06:00
Léo Lam
756d231ff9 file_sys: Add support for BPS patches
The BPS format allows distributing patches that are smaller and that do
not contain copyrighted content if data is relocated
(unlike non-trivial IPS patches).

This is essential for games such as MM3D that have three barely
different code revisions. Supporting all three versions would
demand an unreasonable amount of work; with BPS patches only one
version has to be supported.
2019-12-22 10:46:47 +01:00
Léo Lam
3140086c60 file_sys: Handle patch applying failures
This changes ApplyCodePatch to return a ResultStatus, which makes it
possible to determine whether patch applying has failed. Previously,
only a boolean was returned, and false was returned when no patch
was found OR when a patch was found but applying it failed.

This also changes AppLoader_NCCH to return an error if patching fails
because the executable is likely to be left in an inconsistent state
and we should not proceed booting in that case.
2019-12-22 10:46:47 +01:00
Léo Lam
1377be9902 file_sys: Move IPS patching code into separate source file
In anticipation of a new BPS patcher.
2019-12-22 10:46:47 +01:00
Léo Lam
72a081c617 CMake: Create thin archives on Linux
This significantly reduces unnecessary disk writes and space usage
when building Citra.

libcore.a is now only ~1MB rather than several hundred megabytes.
2019-12-22 10:12:00 +01:00
BreadFish64
cadfd6834d qt: do not use an invalid update smdh 2019-12-18 21:51:06 -06:00
James Rowe
020cd56ad8
Merge pull request #5030 from jroweboy/reorder-queue-acquire
Remove wait for free buffer
2019-12-18 16:07:52 -07:00
James Rowe
dd258acfaf
Merge pull request #5027 from jroweboy/ffmpeg-fix
Reenable AAC FFMPEG decoding
2019-12-17 08:49:35 -07:00
James Rowe
f9421eedcc
Merge pull request #5028 from jroweboy/missing-vsync-telemetry
Add missing vsync telemetry field
2019-12-17 08:49:08 -07:00
James Rowe
1d14b98f81 Remove accidentally pushed debugging logs (#5029) 2019-12-17 11:13:47 +01:00
James Rowe
f369196c9f Remove wait for free buffer
Previously we would first attempt to use any buffer that was free,
meaning whichever buffer has already been displayed. This has poor
interactions when the operating system throttles the update rate of the
window, so if there isn't any free buffers available, just reuse the
oldest frame instead.
2019-12-16 20:02:01 -07:00
James Rowe
b559d1a495 Add missing vsync telemetry field
Was removed as part of #4940 but readded again.
2019-12-16 19:30:28 -07:00
James Rowe
e53a2ac411 Reenable AAC FFMPEG decoding
Simple cut/paste issue where initialized is only set to true when the
emulation attempts to init the Binary Pipe, but we used it to test if
the FFMPEG decoder was valid and disabled it if it wasn't. Just return
the value of have_ffmpeg_dl instead so when dynamic loading is added
it'll still work.
2019-12-16 19:23:43 -07:00
James Rowe
439d550850
Merge pull request #4940 from jroweboy/presentation-thread
Split Presentation thread from Render thread
2019-12-15 20:25:34 -07:00
James Rowe
408e225048 Destroy GLWindow on exit to prevent issues closing the app while in fullscreen 2019-12-15 16:20:59 -07:00
James Rowe
36c5058d66 Reintroduce a vsync option for people with really bad drivers 2019-12-15 15:42:05 -07:00
James Rowe
87facaa2e2 Prevent out of memory errors when the game passes in an improper length value
HACK

In Luigi's Mansion Dark Moon in HLE audio, the game mysteriously passes
in an extremely large value for length, which without any checks, causes
HLE audio to allocate an extremely large buffer.

This value seemingly is caused by some other HLE audio feature is missing,
and Luigi's Mansion subtracts two values to get a length, without
checking for overflow first. This appears to be caused by an incorrect
HLE audio emulation, as its fixed entirely by only changing to LLE. As
such, further investigation is required, but in the meantime, completely
eating up our users RAM is unacceptable.
2019-12-14 18:18:59 -07:00
James Rowe
ddb7ead3e4
Merge pull request #5020 from jroweboy/dynamic-mf
Runtime Load MediaFoundation dlls on Windows
2019-12-14 10:13:54 -07:00
James Rowe
8b1738aeac
Merge pull request #5023 from jroweboy/fix-register-length
Use the correct register length for index_array
2019-12-13 20:31:08 -07:00
James Rowe
30dfe1fcb8 Use the correct register length for index_array
The index_array can't possible be 31 bits long as that would index
out of bounds memory. According to 3dbrew, this should be 28
2019-12-13 18:08:07 -07:00
Cameron Cawley
9a45d32a5f common/cpu_detect: Remove Common::CPUVendor
It's only used by telemetry, where the information it provides can be gained from the brand string.
2019-12-09 22:39:56 +00:00
Cameron Cawley
bc5ad137c0 common/cpu_detect: Remove unused functionality 2019-12-09 22:36:32 +00:00
James Rowe
337ac73915 Improve aac decoder selection 2019-12-08 16:18:39 -07:00
James Rowe
b395efe804 Dynamically load Media Foundation 2019-12-08 13:54:27 -07:00
James Rowe
65613cce81 Add microprofile scopes for presentation 2019-12-02 18:59:12 -07:00