Commit graph

21821 commits

Author SHA1 Message Date
Morph 88efcaf44e x64: cpu_wait: Remove magic values 2023-06-28 01:39:06 -04:00
Morph cffefaf8a7 x64: cpu_wait: Make use of MWAITX in MicroSleep
MWAITX is equivalent to UMWAIT on Intel's Alder Lake CPUs.
We can emulate TPAUSE by using MONITORX in conjunction with MWAITX to wait for 100K cycles.
2023-06-28 01:38:55 -04:00
Morph 841a3559a5 x64: Add detection of monitorx instructions
monitorx introduces 2 instructions: MONITORX and MWAITX.
2023-06-28 01:36:06 -04:00
Liam d54f9ea34f fsmitm_romfsbuild: avoid full path lookups 2023-06-27 23:25:47 -04:00
GPUCode 9e58301aec renderer_vulkan: Prevent crashes when blitting depth stencil 2023-06-27 18:00:09 -07:00
GPUCode 5196f05cec video_core: Add BCn decoding support 2023-06-27 18:00:09 -07:00
GPUCode 8a829a12b6 renderer_vulkan: Add more feature checking 2023-06-27 18:00:09 -07:00
GPUCode d8a98f124a renderer_vulkan: Don't assume debug tool with debug renderer
* Causes crashes because mali drivers don't support debug utils
2023-06-27 18:00:09 -07:00
GPUCode 5011526a94 renderer_vulkan: Bump minimum SPIRV version
* 1.3 is guaranteed on all 1.1 drivers
2023-06-27 18:00:09 -07:00
GPUCode 035b4eaf46 renderer_vulkan: Respect viewport limit 2023-06-27 18:00:09 -07:00
GPUCode 1af4dc2ed7 renderer_vulkan: Don't add transform feedback flag if unsupported 2023-06-27 18:00:09 -07:00
GPUCode 843d93b951 renderer_vulkan: Add suport for debug report callback 2023-06-27 18:00:09 -07:00
liamwhite c64b5c642f Merge pull request #10933 from merryhime/dunno
arm_dynarmic_32: Remove disabling of block linking on arm64
2023-06-27 20:50:24 -04:00
lat9nq dfc7afe44d settings: Clean up includes
Adds <version> since we are looking at C++ implementation version
details. Also moves exception header includes into the if preprocessor
command since we only use it there.
2023-06-27 19:13:54 -04:00
Merry 09012476db arm_dynarmic_32: Remove disabling of block linking on arm64 2023-06-27 23:51:49 +01:00
lat9nq 4bbb9fa29e settings: Catch runtime_error, fallback time zone
Windows will let you select time zones that  will fail in their
own C++ implementation library. Evidently from the stack trace, we get a
runtime error to work with, so catch it and use the fallback.
2023-06-27 18:12:26 -04:00
german77 7dee0cf567 yuzu: Fix clang format 2023-06-27 15:55:23 -06:00
Narr the Reg f8e461e9f2 Merge pull request #9663 from EBADBEEF/disable-controller-applet
qt: add option to disable controller applet
2023-06-27 10:32:51 -06:00
liamwhite 8a679be44b Merge pull request #10867 from Kelebek1/dma_safe
Use safe reads in DMA engine
2023-06-27 11:21:47 -04:00
liamwhite 4f21c05522 Merge pull request #10473 from GPUCode/vma
Use vulkan memory allocator
2023-06-27 11:21:36 -04:00
liamwhite 4696a032a8 Merge pull request #10495 from bm01/master
input_common: Redesign mouse panning
2023-06-27 11:21:28 -04:00
liamwhite f91cc2c72f Merge pull request #10679 from zeltermann/wakelock-reason
Only use SDL wakelock on Linux
2023-06-27 11:21:20 -04:00
liamwhite c869dcd931 Merge pull request #10916 from ameerj/lolmem
OpenGL: Add Local Memory warmup shader for Nvidia
2023-06-27 11:21:10 -04:00
Charles Lombardo 2810786adc android: Fix size check for content uris
Fix for checking file size for android content uris
2023-06-26 22:24:18 -04:00
liamwhite 8affea6a4b Merge pull request #10908 from kiri11/clarify-ring-ui
Clarify Ring-Con configuration message in UI
2023-06-26 14:31:30 -04:00
liamwhite 71949a6077 Merge pull request #10903 from german77/nfc_state
input_common: Improve nfc state handling and 3rd party support
2023-06-26 14:31:23 -04:00
liamwhite 2793f6cf7e Merge pull request #10901 from german77/sdl_fix
input_common: Make use of new SDL features
2023-06-26 14:31:14 -04:00
liamwhite 6121aed4a8 Merge pull request #10888 from 8bitDream/native
android: (native) Parameter types from Android Studio
2023-06-26 14:31:00 -04:00
liamwhite 30cae69b33 Merge pull request #10865 from t895/extension-meme
android: Clean up file extension checks
2023-06-26 14:30:49 -04:00
Charles Lombardo f56487bf3e android: Clean up file extension checks 2023-06-26 13:25:56 -04:00
GPUCode 7a8631cd45 externals: Use cmake subdirectory 2023-06-26 18:59:24 +03:00
Kelebek1 c80b6bfb83 Use safe reads in DMA engine 2023-06-26 11:34:02 +01:00
comex 930b7ac6ee PR feedback + constification 2023-06-25 19:24:49 -07:00
comex 73fb0e03a4 network.cpp: include expected.h 2023-06-25 18:51:39 -07:00
comex ae42f278cb re-format 2023-06-25 17:09:54 -07:00
comex 742d780d77 Fix more Windows build errors
I did test this beforehand, but not on MinGW, and the error that showed
up on the msvc builder didn't happen for me...
2023-06-25 17:06:57 -07:00
comex 3cc874f079 ssl: fix compatibility with OpenSSL 1.1.1
Turns out changes were needed after all.
2023-06-25 16:09:16 -07:00
ameerj 5ae4d9983b OpenGL: Limit lmem warmup to NVIDIA
🐸
2023-06-25 19:06:51 -04:00
ameerj 28cecc6cd8 shaders: Track local memory usage 2023-06-25 18:59:33 -04:00
ameerj a2b344ab9d emit_glasm: Fix lmem size computation 2023-06-25 18:43:52 -04:00
ameerj b2349d75f4 OpenGL: Add Local Memory warmup shader 2023-06-25 18:43:23 -04:00
comex 6018b182fc Fixes:
- Add missing virtual destructor on `SSLBackend`.

- On Windows, filter out `POLLWRBAND` (one of the new flags added) when
  calling `WSAPoll`, because despite the constant being defined on
  Windows, passing it calls `WSAPoll` to yield `EINVAL`.

- Reduce OpenSSL version requirement to satisfy CI; I haven't tested
  whether it actually builds (or runs) against 1.1.1, but if not, I'll
  figure it out.

- Change an instance of memcpy to memmove, even though the arguments
  cannot overlap, to avoid a [strange GCC
  error](https://github.com/yuzu-emu/yuzu/pull/10912#issuecomment-1606283351).
2023-06-25 15:06:52 -07:00
comex 7fc1efe740 ssl: rename argument to avoid false positive codespell warning
The original name `larg` was copied from the OpenSSL documentation and
is not a typo of 'large' but rather an abbreviation of '`long`
argument'.  But whatever, no harm in adding an underscore.
2023-06-25 13:10:41 -07:00
comex 12321ae076 socket_types: Improve comment 2023-06-25 13:10:15 -07:00
comex 6f8d5f068f Implement SSL service
This implements some missing network APIs including a large chunk of the SSL
service, enough for Mario Maker (with an appropriate mod applied) to connect to
the fan server [Open Course World](https://opencourse.world/).

Connecting to first-party servers is out of scope of this PR and is a
minefield I'd rather not step into.

 ## TLS

TLS is implemented with multiple backends depending on the system's 'native'
TLS library.  Currently there are two backends: Schannel for Windows, and
OpenSSL for Linux.  (In reality Linux is a bit of a free-for-all where there's
no one 'native' library, but OpenSSL is the closest it gets.)  On macOS the
'native' library is SecureTransport but that isn't implemented in this PR.
(Instead, all non-Windows OSes will use OpenSSL unless disabled with
`-DENABLE_OPENSSL=OFF`.)

Why have multiple backends instead of just using a single library, especially
given that Yuzu already embeds mbedtls for cryptographic algorithms?  Well, I
tried implementing this on mbedtls first, but the problem is TLS policies -
mainly trusted certificate policies, and to a lesser extent trusted algorithms,
SSL versions, etc.

...In practice, the chance that someone is going to conduct a man-in-the-middle
attack on a third-party game server is pretty low, but I'm a security nerd so I
like to do the right security things.

My base assumption is that we want to use the host system's TLS policies.  An
alternative would be to more closely emulate the Switch's TLS implementation
(which is based on NSS).  But for one thing, I don't feel like reverse
engineering it.  And I'd argue that for third-party servers such as Open Course
World, it's theoretically preferable to use the system's policies rather than
the Switch's, for two reasons

1. Someday the Switch will stop being updated, and the trusted cert list,
   algorithms, etc. will start to go stale, but users will still want to
   connect to third-party servers, and there's no reason they shouldn't have
   up-to-date security when doing so.  At that point, homebrew users on actual
   hardware may patch the TLS implementation, but for emulators it's simpler to
   just use the host's stack.

2. Also, it's good to respect any custom certificate policies the user may have
   added systemwide.  For example, they may have added custom trusted CAs in
   order to use TLS debugging tools or pass through corporate MitM middleboxes.
   Or they may have removed some CAs that are normally trusted out of paranoia.

Note that this policy wouldn't work as-is for connecting to first-party
servers, because some of them serve certificates based on Nintendo's own CA
rather than a publicly trusted one.  However, this could probably be solved
easily by using appropriate APIs to adding Nintendo's CA as an alternate
trusted cert for Yuzu's connections.  That is not implemented in this PR
because, again, first-party servers are out of scope.

(If anything I'd rather have an option to _block_ connections to Nintendo
servers, but that's not implemented here.)

To use the host's TLS policies, there are three theoretical options:

a) Import the host's trusted certificate list into a cross-platform TLS
   library (presumably mbedtls).

b) Use the native TLS library to verify certificates but use a cross-platform
   TLS library for everything else.

c) Use the native TLS library for everything.

Two problems with option a).  First, importing the trusted certificate list at
minimum requires a bunch of platform-specific code, which mbedtls does not have
built in.  Interestingly, OpenSSL recently gained the ability to import the
Windows certificate trust store... but that leads to the second problem, which
is that a list of trusted certificates is [not expressive
enough](https://bugs.archlinux.org/task/41909) to express a modern certificate
trust policy.  For example, Windows has the concept of [explicitly distrusted
certificates](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/dn265983(v=ws.11)),
and macOS requires Certificate Transparency validation for some certificates
with complex rules for when it's required.

Option b) (using native library just to verify certs) is probably feasible, but
it would miss aspects of TLS policy other than trusted certs (like allowed
algorithms), and in any case it might well require writing more code, not less,
compared to using the native library for everything.

So I ended up at option c), using the native library for everything.

What I'd *really* prefer would be to use a third-party library that does option
c) for me.  Rust has a good library for this,
[native-tls](https://docs.rs/native-tls/latest/native_tls/).  I did search, but
I couldn't find a good option in the C or C++ ecosystem, at least not any that
wasn't part of some much larger framework.  I was surprised - isn't this a
pretty common use case?  Well, many applications only need TLS for HTTPS, and they can
use libcurl, which has a TLS abstraction layer internally but doesn't expose
it.  Other applications only support a single TLS library, or use one of the
aforementioned larger frameworks, or are platform-specific to begin with, or of
course are written in a non-C/C++ language, most of which have some canonical
choice for TLS.  But there are also many applications that have a set of TLS
backends just like this; it's just that nobody has gone ahead and abstracted
the pattern into a library, at least not a widespread one.

Amusingly, there is one TLS abstraction layer that Yuzu already bundles: the
one in ffmpeg.  But it is missing some features that would be needed to use it
here (like reusing an existing socket rather than managing the socket itself).
Though, that does mean that the wiki's build instructions for Linux (and macOS
for some reason?) already recommend installing OpenSSL, so no need to update
those.

 ## Other APIs implemented

- Sockets:
    - GetSockOpt(`SO_ERROR`)
    - SetSockOpt(`SO_NOSIGPIPE`) (stub, I have no idea what this does on Switch)
    - `DuplicateSocket` (because the SSL sysmodule calls it internally)
    - More `PollEvents` values

- NSD:
    - `Resolve` and `ResolveEx` (stub, good enough for Open Course World and
      probably most third-party servers, but not first-party)

- SFDNSRES:
    - `GetHostByNameRequest` and `GetHostByNameRequestWithOptions`
    - `ResolverSetOptionRequest` (stub)

 ## Fixes

- Parts of the socket code were previously allocating a `sockaddr` object on
  the stack when calling functions that take a `sockaddr*` (e.g. `accept`).
  This might seem like the right thing to do to avoid illegal aliasing, but in
  fact `sockaddr` is not guaranteed to be large enough to hold any particular
  type of address, only the header.  This worked in practice because in
  practice `sockaddr` is the same size as `sockaddr_in`, but it's not how the
  API is meant to be used.  I changed this to allocate an `sockaddr_in` on the
  stack and `reinterpret_cast` it.  I could try to do something cleverer with
  `aligned_storage`, but casting is the idiomatic way to use these particular
  APIs, so it's really the system's responsibility to avoid any aliasing
  issues.

- I rewrote most of the `GetAddrInfoRequest[WithOptions]` implementation.  The
  old implementation invoked the host's getaddrinfo directly from sfdnsres.cpp,
  and directly passed through the host's socket type, protocol, etc. values
  rather than looking up the corresponding constants on the Switch.  To be
  fair, these constants don't tend to actually vary across systems, but
  still... I added a wrapper for `getaddrinfo` in
  `internal_network/network.cpp` similar to the ones for other socket APIs, and
  changed the `GetAddrInfoRequest` implementation to use it.  While I was at
  it, I rewrote the serialization to use the same approach I used to implement
  `GetHostByNameRequest`, because it reduces the number of size calculations.
  While doing so I removed `AF_INET6` support because the Switch doesn't
  support IPv6; it might be nice to support IPv6 anyway, but that would have to
  apply to all of the socket APIs.

  I also corrected the IPC wrappers for `GetAddrInfoRequest` and
  `GetAddrInfoRequestWithOptions` based on reverse engineering and hardware
  testing.  Every call to `GetAddrInfoRequestWithOptions` returns *four*
  different error codes (IPC status, getaddrinfo error code, netdb error code,
  and errno), and `GetAddrInfoRequest` returns three of those but in a
  different order, and it doesn't really matter but the existing implementation
  was a bit off, as I discovered while testing `GetHostByNameRequest`.

  - The new serialization code is based on two simple helper functions:

    ```cpp
    template <typename T> static void Append(std::vector<u8>& vec, T t);
    void AppendNulTerminated(std::vector<u8>& vec, std::string_view str);
    ```

    I was thinking there must be existing functions somewhere that assist with
    serialization/deserialization of binary data, but all I could find was the
    helper methods in `IOFile` and `HLERequestContext`, not anything that could
    be used with a generic byte buffer.  If I'm not missing something, then
    maybe I should move the above functions to a new header in `common`...
    right now they're just sitting in `sfdnsres.cpp` where they're used.

- Not a fix, but `SocketBase::Recv`/`Send` is changed to use `std::span<u8>`
  rather than `std::vector<u8>&` to avoid needing to copy the data to/from a
  vector when those methods are called from the TLS implementation.
2023-06-25 12:53:31 -07:00
Kirill Ignatev ba51f27437 Hyphenate Joy-Con and clarify further 2023-06-25 12:51:16 -04:00
Kirill Ignatev d113954bec Clarify Ring-Con configuration message in UI
Not obvious how left controller should be set up
Mention that it should be left physical dual emulated
2023-06-25 11:52:15 -04:00
german77 9e204b0308 core: hid: Allow to read bin files while switch controller is available 2023-06-24 18:59:55 -06:00
german77 4c2f8ac0eb input_common: Dont try to read/write data from 3rd party controllers 2023-06-24 18:59:55 -06:00
german77 b16b2a486b input_common: Make use of new SDL features 2023-06-24 17:42:56 -06:00
zeltermann 377ffa277c Only use SDL wakelock on Linux
SDL has internally fixed shenanigans related to wakelocking through DBus
from inside sandboxes from around August 2022, so we can now remove the
workaround we used since 2021.
2023-06-24 14:51:41 +07:00
Abandoned Cart 51068a23af android: define [[maybe_unused]] (const) auto 2023-06-23 14:05:14 -04:00
Abandoned Cart f2aeaddf52 android: Parameter types from Android Studio
Android Studio marked these parameters as errors because it is an instance, not a class, that is being passed from Java.
2023-06-23 10:36:30 -04:00
liamwhite 188f3d786f Merge pull request #10811 from 8bitDream/pip_mute
android: Add a PiP interface to mute / unmute
2023-06-23 09:27:28 -04:00
liamwhite fa8419f54e Merge pull request #10859 from liamwhite/no-more-atomic-wait
general: remove atomic signal and wait
2023-06-23 09:27:14 -04:00
liamwhite 67778a69b0 Merge pull request #10842 from german77/native_mifare
input_common: Implement native mifare/skylander support for joycons/pro controller
2023-06-23 09:27:00 -04:00
Liam 217bb87494 vfs_real: lock concurrent accesses 2023-06-23 00:57:24 -04:00
bunnei 7a546be139 Merge pull request #10457 from Kelebek1/optimise
Remove memory allocations in some hot paths
2023-06-22 21:53:07 -07:00
bunnei 5b3787e8a3 Merge pull request #10806 from liamwhite/worst-fs-implementation-ever
vfs_real: misc optimizations
2023-06-22 21:46:50 -07:00
bunnei 889371ab35 Merge pull request #10794 from 8bitDream/multiples
android: Add support for multiple installs
2023-06-22 14:26:24 -07:00
Morph 0ad233da22 Merge pull request #10878 from GPUCode/log-droid
android: Log settings
2023-06-22 16:16:20 -04:00
bunnei 3963d06e86 Merge pull request #10869 from 8bitDream/memory
android: Add a notice when RAM inadequate
2023-06-22 10:26:32 -07:00
GPUCode 925a069402 android: Log settings 2023-06-22 20:17:52 +03:00
GPUCode c813876c5a vulkan_common: Remove required flags
* Allows VMA to fallback to system RAM instead of crashing
2023-06-22 20:03:12 +03:00
Liam db40a2f430 general: remove atomic signal and wait 2023-06-22 09:25:23 -04:00
Kelebek1 c7430e51e3 Remove memory allocations in some hot paths 2023-06-22 08:05:10 +01:00
bunnei 72a469b967 Merge pull request #10086 from Morph1984/coretiming-ng-1
core_timing: Use CNTPCT as the guest CPU tick
2023-06-21 21:12:46 -07:00
bunnei 5a5080ba4e Merge pull request #10777 from liamwhite/no-barrier
video_core: optionally skip barriers on feedback loops
2023-06-21 21:10:08 -07:00
bunnei feb4104440 Merge pull request #10841 from liamwhite/math-is-hard
vfs_concat: fix offset calculation when not aligned to file boundary
2023-06-21 21:07:08 -07:00
bunnei 1642b5217e Merge pull request #10863 from lat9nq/tz-end-of-string
time_zone_manager: Stop on comma
2023-06-21 21:05:03 -07:00
Narr the Reg b24451c571 input_common: Implement native mifare support 2023-06-21 17:54:58 -06:00
Abandoned Cart c955fc20b3 android: Generalize string message dialog 2023-06-21 18:25:15 -04:00
Abandoned Cart 42548ded9d android: Add support for concurrent installs 2023-06-21 18:25:15 -04:00
Abandoned Cart 25ad652787 android: Convert memory sizes to resource 2023-06-21 18:24:49 -04:00
Abandoned Cart 0891b3e775 android: Add a notice when RAM inadequate 2023-06-21 18:24:49 -04:00
Abandoned Cart f06174ed2b android: Refactor native and corresponding variables 2023-06-21 18:23:13 -04:00
Abandoned Cart 777567975e Fix JNI and expose mute settings to Android 2023-06-21 18:23:13 -04:00
Abandoned Cart 67ec04ddd5 android: Add a PiP interface to mute / unmute 2023-06-21 17:21:36 -04:00
Charles Lombardo 839e5f65e4 android: Don't show custom driver button on mali and x86 2023-06-20 20:06:36 -04:00
lat9nq 9357aaf637 time_zone_manager: Add null terminator
We aren't null-terminating this string after the copy, and we need to.
2023-06-20 15:54:28 -04:00
lat9nq aedaa1aa19 time_zone_manager: Stop on comma
This is a deviation from the reference time zone implementation. The
actual code will set a pointer to the time zone name here, but for us we
have a limited number of characters to work with, and the name of the
time zone here could be larger than 8 characters.

We can make the assumption that time zone names greater than five
characters in length include a comma that denotes more data. Nintendo
just truncates that data for the name, so we can do the same.

time_zone_manager: Check for length of array

Just to be double sure that we never break past the array length,
directly compare against it.
2023-06-20 15:54:05 -04:00
liamwhite 10f2beb17a Merge pull request #10818 from vonchenplus/render_target_samples
video_core: add samples check when find render target
2023-06-20 09:55:23 -04:00
liamwhite 5df094850f Merge pull request #10835 from lat9nq/intel-restrict-compute-disable
vulkan_device: Restrict compute disable only to affected Intel drivers
2023-06-20 09:55:14 -04:00
liamwhite 50fe67c0f1 Merge pull request #10840 from Kelebek1/unbug_blinks_brain
Use current GPU address when unmapping GPU pages, not the base
2023-06-20 09:55:01 -04:00
toast2903 f68b01a8cf vulkan_device: Remove brace initializer
Co-authored-by: Tobias <thm.frey@gmail.com>
2023-06-19 17:35:12 -04:00
lat9nq 1ad8df763f video_core: Check broken compute earlier
Checks it as the system is determining what settings to enable. Reduces
the need to check settings while the system is running.
2023-06-19 17:33:30 -04:00
Liam e1d8e0d842 vfs_concat: verify short read 2023-06-19 09:47:05 -04:00
Liam 0faeac4fcb vfs_concat: fix offset calculation when not aligned to file boundary 2023-06-18 22:21:29 -04:00
Kelebek1 6bd6e24d6e Use current GPU address when unmapping GPU pages, not the base 2023-06-19 00:19:50 +01:00
lat9nq eb2c848912 vk_device_info: Check only affected Intel drivers
Renames is_intel_proprietary to has_broken_compute for accuracy.

vk_device_info: Use vulkan::device to check compute
2023-06-18 16:15:51 -04:00
lat9nq a74f77bbbc video_core: Formalize HasBrokenCompute
Also limits it to only affected Intel proprietrary driver versions.

vulkan_device: Move broken compute determination

vk_device: Remove errant back quote
2023-06-18 16:15:47 -04:00
liamwhite 1ddf844419 Merge pull request #10829 from lat9nq/remove-external-mem
vulkan_device: Remove external memory extension
2023-06-18 09:43:03 -04:00
liamwhite 843f80ae60 Merge pull request #10486 from lat9nq/vk-device-find-once
yuzu-qt: Load Vulkan device info at startup
2023-06-18 09:42:55 -04:00
liamwhite 2f65ed20b7 Merge pull request #10798 from vonchenplus/draw_texture_scale
video_core: drawtexture support upscale
2023-06-18 09:42:41 -04:00
liamwhite e48b4b0b36 Merge pull request #10809 from Kelebek1/reduce_vertex_bindings
Synchronize vertex buffer even when it doesn't require binding
2023-06-18 09:42:32 -04:00
GPUCode 7b3718dc9c renderer_vulkan: Add missing initializers 2023-06-18 14:14:03 +03:00
GPUCode 66d3a1c5c7 renderer_vulkan: Use VMA for buffers 2023-06-18 12:45:18 +03:00
GPUCode d84d595dab renderer_vulkan: Use VMA for images 2023-06-18 12:45:18 +03:00
GPUCode fd9b920d2d memory_allocator: Remove OpenGL interop
* Appears to be unused atm
2023-06-18 12:45:18 +03:00
lat9nq 0a4650cd2b externals: Add vma and initialize it
video_core: Move vma implementation to library
2023-06-18 12:45:12 +03:00
bunnei 6d055a21e3 Merge pull request #10797 from lat9nq/tzdb-patch
time: Various time zone fixes
2023-06-17 23:47:16 -07:00
lat9nq 38fe34a43f vulkan_device: Remove external memory extension
Unused in yuzu. Enables yuzu to boot games in Wine using Vulkan.
2023-06-18 01:20:08 -04:00
Liam e62d452bd9 renderer_vulkan: add missing include 2023-06-17 23:57:47 -04:00
lat9nq e260539065 time_zone_service: Always write time zone rule data
Switch firmware will initialize this data even if the given parameters
are invalid. We should do the same.
2023-06-17 20:53:39 -04:00
Morph 5cf658d2e6 Merge pull request #10813 from lat9nq/no-atomic-bool
k_thread: Use a mutex and cond_var to sync bool
2023-06-17 20:29:57 -04:00
Fernando S 06f47d34c8 Merge pull request #10744 from Wollnashorn/af-for-all
video_core: Improved anisotropic filtering heuristics
2023-06-18 00:02:05 +02:00
Kelebek1 547e837f78 Synchronize vertex buffer even when it doesn't require binding 2023-06-17 17:47:00 -04:00
lat9nq 59236a458c k_thread: Use a mutex and cond_var to sync bool
std::atomic<bool> is broken on MinGW and causes deadlocks there.
Use a normal cond var in its stead.
2023-06-17 15:25:36 -04:00
FengChen 255ab12789 video_core: add samples check when find render target 2023-06-17 23:48:51 +08:00
Wollnashorn e10113e853 video_core: Only apply AF to 2D (array) image types 2023-06-17 14:20:44 +02:00
Wollnashorn 62b0b6bde0 video_core: Removed AF for all mip modes option as it's default now 2023-06-17 11:19:39 +02:00
bunnei 853249121d Merge pull request #10783 from liamwhite/memory
video_core: preallocate fewer IR blocks
2023-06-16 16:53:25 -07:00
bunnei e979299431 Merge pull request #10808 from t895/settings-stuffs
android: Expose settings
2023-06-16 16:52:54 -07:00
bunnei 2854efee65 Merge pull request #10807 from t895/ktlint-fixes
android: Ktlint fixes
2023-06-16 16:47:14 -07:00
liamwhite 4c7987cded Merge pull request #10731 from german77/misc_fixes
service: nfc: Accuracy fixes
2023-06-16 18:18:24 -04:00
Liam 3191a97b22 vfs_real: ensure size cache is reset on write 2023-06-16 16:43:14 -04:00
Charles Lombardo 8586ed3bfe android: Expose audio output engine setting 2023-06-16 16:42:56 -04:00
Charles Lombardo cb65166fac android: Bump ktlint version to 0.47.1 2023-06-16 16:32:08 -04:00
Charles Lombardo fa67cd8edf android: Disable import-ordering ktlint check 2023-06-16 16:31:49 -04:00
Liam b73cc6d51c patch_manager: remove unnecessary GetSize calls 2023-06-16 16:29:10 -04:00
Liam 0f7b1f067f vfs_real: misc optimizations 2023-06-16 16:29:06 -04:00
Charles Lombardo a88166f870 android: Expose CPU debugging option 2023-06-16 16:25:06 -04:00
Charles Lombardo 6c18ceff4d android: Expose fastmem option 2023-06-16 16:24:40 -04:00
Charles Lombardo c050dd3122 android: Support changing multiple settings at once 2023-06-16 15:49:49 -04:00
Abandoned Cart 465927f4c5 android: Fix aspect ratio when rotating screen 2023-06-16 10:11:18 -04:00
Feng Chen c362895572 video_core: drawtexture support upscale 2023-06-16 20:51:15 +08:00
Wollnashorn 815f54385a video_core: Use sampler IDs instead pointers in the pipeline config
The previous approach of storing pointers returned by `GetGraphicsSampler`/`GetComputeSampler` caused UB, as these functions can cause reallocation of the sampler slot vector and therefore invalidate the pointers
2023-06-16 13:45:14 +02:00
liamwhite c637971ae3 Merge pull request #10795 from german77/foomiibo
input_common: Add foomiibo support
2023-06-16 00:08:30 -04:00
lat9nq 5173821cfa time_zone_manager: Compare to the correct boolean
Reference implementation does not compare the booleans as we had them.
Use the correct ones as in the reference.

Also adds an assert. I have been made aware of a crash here and am
not able to reproduce currently.
2023-06-15 23:05:41 -04:00
lat9nq 2ed870c2a8 nx_tzdb: Correct Antarctica spelling 2023-06-15 23:03:54 -04:00
Charles Lombardo 37cbf16322 android: Apply ktlint codestyle 2023-06-15 22:36:54 -04:00
Charles Lombardo 98f711100e Android: Use ktlint for Kotlin code style 2023-06-15 22:22:49 -04:00
Charles Lombardo 1ad4a05d64 android: Enable android linting 2023-06-15 22:19:58 -04:00
bunnei 947e258ac2 Merge pull request #10796 from bunnei/fix-saf
android: fs: Fix Exists / IsFile for SAF.
2023-06-15 18:39:14 -07:00
bunnei 837d487905 Merge pull request #10790 from liamwhite/arm-driver-moment
vulkan_device: disable extended_dynamic_state2 on ARM drivers
2023-06-15 18:34:31 -07:00
bunnei 981332d727 Merge pull request #10775 from liamwhite/cb2
renderer_vulkan: propagate conditional barrier support
2023-06-15 17:37:03 -07:00
Narr the Reg 4a5f56645a input_common: Add amiibo with originality signature support 2023-06-15 18:22:13 -06:00
bunnei bc21da779e android: fs: Fix Exists / IsFile for SAF. 2023-06-15 17:20:56 -07:00
bunnei da26ff3e0f Merge pull request #10639 from 8bitDream/pictureinpicture
android: Support for Picture in Picture / Portrait
2023-06-15 16:40:13 -07:00
Wollnashorn eff77dae59 video_core: Fallback to default anisotropy instead to 1x anisotropy 2023-06-15 23:16:26 +02:00
Wollnashorn e405fb1c72 video_core: Disable AF for non-color image formats 2023-06-15 20:59:33 +02:00
Wollnashorn 1f7c69934d video_core: Fixed compilation errors because of name shadowing 2023-06-15 18:46:40 +02:00
Liam 0875e158fe vulkan_device: disable extended_dynamic_state2 on ARM drivers 2023-06-15 12:29:54 -04:00
Wollnashorn 1844cad9d4 video_core: Add per-image anisotropy heuristics (format & mip count) 2023-06-15 18:19:32 +02:00
Liam c913c891e0 video_core: preallocate fewer IR blocks 2023-06-14 21:37:57 -04:00
bunnei c307399340 Merge pull request #10729 from liamwhite/windows-is-a-meme
vfs_real: add file LRU cache for open file limits
2023-06-14 18:32:25 -07:00
Narr the Reg 6ae2249f88 service: nfc: Read tag protocol only for nfc backend 2023-06-14 18:16:23 -06:00
Narr the Reg 05fcd73843 service: nfc: Accuracy fixes 2023-06-14 18:08:35 -06:00
Morph 6a4ebf7dd6 Merge pull request #10749 from Morph1984/strong-typing
buffer_cache_base: Specify buffer type in HostBindings
2023-06-14 18:03:11 -04:00
Abandoned Cart dfa23c70c6 android: Move overlays to their own layout 2023-06-14 16:43:24 -04:00
Abandoned Cart 5d37de1e70 android: Initialize defaults for each orientations 2023-06-14 16:35:58 -04:00
Abandoned Cart e438f2e053 android: Display FPS with emulation on hinge 2023-06-14 16:35:57 -04:00
Abandoned Cart 468a6c5555 android: Remove PiP reliance on fragment 2023-06-14 16:35:56 -04:00
Abandoned Cart 5417700e64 android: Set layout by fragment, not view 2023-06-14 16:35:54 -04:00
Abandoned Cart be83a80f62 android: Add a separate foldable layout set 2023-06-14 16:34:23 -04:00
Abandoned Cart df42e34dfb android: Set portrait default control params 2023-06-14 16:34:22 -04:00
Abandoned Cart f24d322941 android: Actually implement portrait controls 2023-06-14 16:34:19 -04:00
Abandoned Cart 78826a0afd android: Enable automated portrait controls 2023-06-14 16:34:16 -04:00
Abandoned Cart 399fb74890 android: Add Picture in Picture / Orientation 2023-06-14 16:34:14 -04:00
Charles Lombardo 8e33b7993d android: Adapt EmulationActivity to navigation component 2023-06-14 14:55:25 -04:00
Liam d0837e10ae video_core: optionally skip barriers on feedback loops 2023-06-14 14:11:46 -04:00
Liam e77190ffab renderer_vulkan: propagate conditional barrier support 2023-06-14 10:49:40 -04:00
Wollnashorn 04782a922d video_core: Apply AF only to samplers with normal LOD range [0, 1+x] 2023-06-14 13:27:27 +02:00
Wollnashorn 9f46c7724b video_core: Fix default anisotropic heuristic 2023-06-14 11:21:22 +02:00
Wollnashorn 614f8a0429 video_core: Never apply AF to None mipmap mode
Should fix some artifacts with the "apply anisotropic filtering for all mipmap modes" option
2023-06-14 03:57:39 +02:00
Liam 863d5c23d0 vfs_real: require file existence on open 2023-06-13 17:22:47 -04:00
Liam 87087b768b vfs_real: add simplified open file cache 2023-06-13 17:16:14 -04:00
bunnei 4abd6e552c Merge pull request #10603 from lat9nq/tz-more-complete
core,common: Implement missing time zone data/computations
2023-06-13 13:28:45 -07:00
Charles Lombardo 8395dcea78 Merge pull request #10760 from FearlessTobi/translations
android: Declare languages in locales_config.xml
2023-06-13 15:48:45 -04:00
Wollnashorn ff4c4a45e6 video_core: Disable anisotropic filtering for samplers with depth compare 2023-06-13 21:32:32 +02:00
FearlessTobi f437542a7f android: Declare languages in locales_config.xml
This is required to make per-app language swithcing possible on Android 13.
2023-06-13 20:26:45 +02:00
Charles Lombardo 33812b0c24 Merge pull request #10751 from german77/touch
android: Fix touch input
2023-06-13 14:01:02 -04:00
bunnei 8f68196ecc Merge pull request #10747 from liamwhite/arm-interface-decouple
core: decouple ARM interface from Dynarmic
2023-06-13 09:45:09 -07:00
Liam 729216e5d8 vfs_real: lazily open files 2023-06-13 10:37:34 -04:00
Liam efaaa6e0bf vfs_real: add file LRU cache for open file limits 2023-06-13 10:37:34 -04:00
german77 110f8ea167 android: Fix touch input 2023-06-13 00:17:10 -06:00
Morph 9da90de908 buffer_cache_base: Specify buffer type in HostBindings
Avoid reinterpret-casting from void pointer since the type is already known at compile time.
2023-06-13 00:59:42 -04:00
bunnei 0c919d1704 Merge pull request #10746 from bunnei/update-android-settings
android: Update settings, remove unused translations
2023-06-12 21:15:26 -07:00
Liam 5b858c8306 core: decouple ARM interface from Dynarmic 2023-06-12 22:11:51 -04:00
Wollnashorn 6f1fb4c28a video_core: Option to apply anisotropic filtering for all mipmap modes 2023-06-13 03:21:01 +02:00
liamwhite aab6e3098d Merge pull request #10675 from liamwhite/scaler
image_info: adjust rescale thresholds and refactor constant use
2023-06-12 21:16:36 -04:00
bunnei 5f6c1b5243 android: settings: Disable force_max_clock by default. 2023-06-12 17:57:48 -07:00
bunnei 501e43a053 android: settings: Add reactive flushing as a default-disabled setting. 2023-06-12 17:56:44 -07:00
bunnei 5c6c48fe24 android: res: Remove translated strings that no longer exist. 2023-06-12 17:45:02 -07:00
bunnei f631b3a39a Merge pull request #10743 from FearlessTobi/translations
android: Add translation files manually
2023-06-12 17:20:27 -07:00
bunnei 72db3f10d0 Merge pull request #10705 from german77/updates
android: Add update and DLC support
2023-06-12 17:03:44 -07:00
FearlessTobi cf118cecd0 android: Add translation files manually 2023-06-13 01:00:23 +02:00
bunnei 5f6814da47 Merge pull request #10728 from t895/game-hash
android: Use autogenerated hash code function for Game class
2023-06-12 14:45:18 -07:00
bunnei a7d42ec05b Merge pull request #10724 from t895/auto-version-property
android: Use autoVersion when gradle property is set
2023-06-12 13:12:32 -07:00
Matías Locatti 28e1429daf Merge pull request #10699 from liamwhite/conditional-barrier
shader_recompiler: remove barriers in conditional control flow when device lacks support
2023-06-12 16:50:59 -03:00
bunnei d40c8428a0 Merge pull request #10693 from liamwhite/f64-to-f32
shader_recompiler: translate f64 to f32 when unsupported on host
2023-06-12 12:46:54 -07:00
Narr the Reg 707999d4c0 android: Add update support 2023-06-11 23:33:50 -06:00
Morph 492a4c705a Merge pull request #10718 from liamwhite/buffered-io
qt: use larger buffer for update install
2023-06-12 00:58:34 -04:00
Charles Lombardo c62bbe270a android: Use autogenerated hash code function for Game class 2023-06-11 21:15:13 -04:00
Charles Lombardo 8180d213d7 android: Use autoVersion when gradle property is set 2023-06-11 20:04:08 -04:00
Baptiste Marie 83f4158d6c input_common: Redesign mouse panning 2023-06-12 00:47:52 +02:00
bunnei 866b7c0632 Merge pull request #10668 from Kelebek1/reduce_vertex_bindings
Combine vertex/transform feedback buffer binding into a single call
2023-06-11 11:33:48 -07:00
bunnei e35f1fc123 Merge pull request #10713 from t895/gradle-updates
android: Gradle updates
2023-06-11 11:31:03 -07:00
Liam 26a9ebf326 qt: use larger buffer for update install 2023-06-11 11:43:04 -04:00
Charles Lombardo 81d4145aca android: Update dependencies 2023-06-11 02:17:29 -04:00