Commit Graph

390 Commits

Author SHA1 Message Date
spectranator
e6f0b73d23 video_core: Implement Vulkan SPIR-V Optimization on Desktop OSes
Some checks failed
mandarine-build / source (push) Has been cancelled
mandarine-build / linux (appimage) (push) Has been cancelled
mandarine-build / linux (fresh) (push) Has been cancelled
mandarine-build / macos (arm64) (push) Has been cancelled
mandarine-build / macos (x86_64) (push) Has been cancelled
mandarine-build / windows (msvc) (push) Has been cancelled
mandarine-build / windows (msys2) (push) Has been cancelled
mandarine-build / android (push) Has been cancelled
mandarine-format / clang-format (push) Has been cancelled
mandarine-build / macos-universal (push) Has been cancelled
mandarine-build / release (push) Has been cancelled
2024-11-14 18:03:56 +01:00
Gamer64
17422ff2c7 externals: update tracy 2024-11-14 17:50:02 +01:00
Gamer64
1086c5126a code: remove some trailing whitespaces 2024-09-22 14:14:04 +02:00
Jarrod Norwell
6732a2160e
Added Android 15 support, fixed Android 15 errors, update libadrenotools (#106)
Some checks failed
mandarine-build / macos (arm64) (push) Waiting to run
mandarine-build / macos (x86_64) (push) Waiting to run
mandarine-build / macos-universal (push) Blocked by required conditions
mandarine-build / windows (msvc) (push) Waiting to run
mandarine-build / windows (msys2) (push) Waiting to run
mandarine-build / release (push) Blocked by required conditions
mandarine-build / source (push) Failing after 0s
mandarine-build / linux (appimage) (push) Failing after 0s
mandarine-build / linux (fresh) (push) Failing after 0s
mandarine-build / android (push) Failing after 0s
mandarine-format / clang-format (push) Failing after 0s
2024-09-15 10:25:36 +00:00
Gamer64
df439aede2 externals: update SDL 2024-09-10 00:33:08 +02:00
Gamer64
2a195e6f6d externals: update submodules 2024-09-09 23:35:26 +02:00
Gamer64
b17d0e05fa externals: update submodules 2024-08-14 21:43:35 +02:00
Gamer64
4388568e74 externals: update cpp-jwt, cryptopp and cryptopp-cmake 2024-08-02 17:58:57 +02:00
Gamer64
3dcf6ed2d9 externals: update catch2, dds-ktx, faad2 and lodepng 2024-08-02 17:41:53 +02:00
Gamer64
0eeb5165a1 externals: update libusb, libyuv, openal-soft and soundtouch 2024-08-02 17:35:26 +02:00
Gamer64
1d7248d719 externals: update enet, inih, nihstro and oaknut 2024-08-02 17:15:22 +02:00
Gamer64
33eb18fd88 externals: update fmt, glslang, xbyak and zstd 2024-08-02 16:34:37 +02:00
Gamer64
d9cb0696a2 externals: update fmt 2024-08-02 02:10:39 +02:00
Gamer64
5d6f89c4ba externals: update vma, vulkan-headers and libadrenotools 2024-08-02 00:39:37 +02:00
Gamer64ytb
f773bbd0a3 Android & PC: Initial Mandarine rebrand
One of the reasons of this rebrand is that I noticed that "Citra-Enhanced" doesn't call much the attention of the people, and looks like a very simple brand, so let's change our papers.
2024-07-27 15:27:58 +02:00
TheTurtle
03e29165c4 Migrate to tracy profiler from Microprofile 2024-07-25 23:54:31 +02:00
Gamer64ytb
322e61cbac Android: Implement oboe audio backend
Co-Authored-By: Ishan09811 <156402647+ishan09811@users.noreply.github.com>
2024-07-25 22:53:08 +02:00
PabloMK7
9b39b43e90
Update dynarmic to the latest version. (#170) 2024-07-07 15:10:35 +02:00
kongfl888 K
09dc3a5592
Fix gcc 13+ compilation and update fmt. (#142)
* Soc and artic_bass: gcc 13+ compatibility fix.

* externals/fmt: update to HEAD fcd3e1e19.
It will fix error.
  integer_sequence<bool, (Is == Is)...>  [-Werror=tautological-compare]
The updating is helpful and needed.
Fmt has gone through two public versions since its last update
and has fixed many bugs, including new compiler optimizations.
But neither of these two public versions can fix the errors encountered above.
We need to switch to a working version.
It can be fixed after fmt/8e62172.There are still many optimizations,
Such as this one:
  Std. h c++23 build fix (# 3856)
And these:
  C++23 compatibility: basicstring_view cannot be constructed from nullptr (# 3846)
  Fix warning C4702 emitted from format.h (MSVC) (#3866)
Of course, there are other functional improvements as well.
Very helpful.
The selected version is the one that has been checked and works well.

And synchronously updating local code.

* citra_qt/ui: clean up duplicate naming warnings.
2024-06-14 13:23:07 +02:00
Reg Tiangha
de65b15dde
renderer_vulkan: Rewrite descriptor set management and various small fixes (#77)
* renderer_vulkan: Remove vulkan prefix in SetObjectName

* renderer_vulkan: Rename renderpass cache to render manager

* It is no longer just a cache

* renderer_vulkan: Rewrite descriptor management

* Switch to batched vkUpdateDescriptorSets from cached descriptor sets with templates

* vk_master_semaphore: Remove waitable atomic

* These are buggy on some platforms and regular condition_variables are faster most of the time

* vk_texture_runtime.cpp: remove outdated references

* vk_render_manager: Minor cleanups and rename to RenderManager

* It is no longer just a renderpass cache
* Revert variable name change from render_manager back to renderpass_cache

---------

Co-authored-by: GPUCode <geoster3d@gmail.com>
2024-04-22 22:43:36 +02:00
Castor215
749a721aa2
externals: disable system cpp-httplib if it is a shared object (#7446)
Co-authored-by: Castor216 <davidjamescastor215@proton.me>
2024-02-17 06:39:38 -08:00
Steveice10
19784355f9
build: Improve support for Windows cross-compilation. (#7389)
* build: Improve support for Windows cross-compilation.

* build: Move linuxdeploy download to bundle target execution time.
2024-02-05 10:09:50 -08:00
Steveice10
c978c074db
build: Update and re-enable cubeb on macOS. (#7405) 2024-02-01 15:29:14 -08:00
Steveice10
9f5d5c6ddd
externals: Remove broken android-ifaddrs. (#7410) 2024-02-01 06:39:13 -08:00
merry
63feac6bb3
externals: Update dynarmic to 6.6.1, Update oaknut to 2.0.1 (#7398) 2024-01-30 19:50:39 -08:00
Steveice10
82294425e3
build: Add flags to toggle specific renderer backends. (#7375) 2024-01-21 23:29:46 -08:00
Steveice10
2ce0a9e899
renderer_vulkan: Update to support MoltenVK 1.2.7 (#7335) 2024-01-09 11:33:47 -08:00
Daniel López Guimaraes
dccb8f6b17
gamemode: Fix compile issues (#7276)
The Linux build fails to compile because gamemode will try to link
against `common` when it's not needed.
2023-12-22 19:29:44 +05:30
Tobias
c7e9f8449e
Port yuzu-emu/yuzu#11946: "Enable (Feral Interactive) Gamemode on Linux" (#7245) 2023-12-20 06:08:07 -08:00
SuperSamus
98f17f8f04
externals: fix find Crypto++ (#7189)
Co-authored-by: Martino Fontana <tinozzo123@gmail.com>
2023-11-20 04:07:41 -08:00
Castor215
ba702043f0
externals: allow user to use system Catch2 (#7190) 2023-11-18 15:54:27 -08:00
SuperSamus
2a4c60c1dd
externals: fix find OpenAL (#7188) 2023-11-18 15:54:18 -08:00
Castor215
6f05dd9d1d
externals: allow user to use system Vulkan headers (#7155) 2023-11-12 13:02:23 -08:00
Castor215
b74c91457e
externals: allow user to use system VulkanMemoryAllocator (#7149) 2023-11-11 11:52:28 -08:00
Castor215
80ac6c03b5
externals: allow user to use system openal (#7145) 2023-11-10 13:15:02 -08:00
Steveice10
d4f31bc617
video_core: Fix fragment shader interlock usage on OpenGL. (#7144) 2023-11-10 13:14:52 -08:00
Castor215
fcc0fd671a
externals: allow user to use system lodepng (#7138) 2023-11-08 15:39:24 -08:00
Steveice10
4dd6e12e46
externals: Update faad2 and remove SBR configuration workaround. (#7128) 2023-11-07 18:12:03 -08:00
Wunk
e13735b624
video_core: Implement an arm64 shader-jit backend (#7002)
* externals: Add oaksim submodule

Used for emitting ARM64 assembly

* common: Implement aarch64 ABI

Utilize oaknut to implement a stack frame.

* tests: Allow shader-jit tests for x64 and a64

Run the shader-jit tests for both x86_64 and arm64 targets

* video_core: Initialize arm64 shader-jit backend

Passes all current unit tests!

* shader_jit_a64: protect/unprotect memory when jit-ing

Required on MacOS. Memory needs to be fully unprotected and then
re-protected when writing or there will be memory access errors on
MacOS.

* shader_jit_a64: Fix ARM64-Imm overflow

These conditionals were throwing exceptions since the immediate values
were overflowing the available space in the `EOR` instructions. Instead
they are generated from `MOV` and then `EOR`-ed after.

* shader_jit_a64: Fix Geometry shader conditional

* shader_jit_a64: Replace `ADRL` with `MOVP2R`

Fixes some immediate-generation exceptions.

* common/aarch64: Fix CallFarFunction

* shader_jit_a64: Optimize `SantitizedMul`

Co-authored-by: merryhime <merryhime@users.noreply.github.com>

* shader_jit_a64: Fix address register offset behavior

Based on https://github.com/citra-emu/citra/pull/6942
Passes unit tests.

* shader_jit_a64: Fix `RET` address offset

A64 stack is 16-byte aligned rather than 8. So a direct port of the x64
code won't work. Fixes weird branches into invalid memory for any
shaders with subroutines.

* shader_jit_a64: Increase max program size

Tuned for A64 program size.

* shader_jit_a64: Use `UBFX` for extracting loop-state

Co-authored-by: JosJuice <JosJuice@users.noreply.github.com>

* shader_jit_a64: Optimize `SUB+CMP` to `SUBS`

Co-authored-by: JosJuice <JosJuice@users.noreply.github.com>

* shader_jit_a64: Optimize `CMP+B` to `CBNZ`

Co-authored-by: JosJuice <JosJuice@users.noreply.github.com>

* shader_jit_a64: Use `FMOV` for `ONE` vector

Co-authored-by: JosJuice <JosJuice@users.noreply.github.com>

* shader_jit_a64: Remove x86-specific documentation

* shader_jit_a64: Use `UBFX` to extract exponent

Co-authored-by: JosJuice <JosJuice@users.noreply.github.com>

* shader_jit_a64: Remove redundant MIN/MAX `SRC2`-NaN check

Special handling only needs to check SRC1 for NaN, not SRC2.
It would work as follows in the four possible cases:

No NaN: No special handling needed.
Only SRC1 is NaN: The special handling is triggered because SRC1 is NaN, and SRC2 is picked.
Only SRC2 is NaN: FMAX automatically picks SRC2 because it always picks the NaN if there is one.
Both SRC1 and SRC2 are NaN: The special handling is triggered because SRC1 is NaN, and SRC2 is picked.

Co-authored-by: JosJuice <JosJuice@users.noreply.github.com>

* shader_jit/tests:: Add catch-stringifier for vec2f/vec3f

* shader_jit/tests: Add Dest Mask unit test

* shader_jit_a64: Fix Dest-Mask `BSL` operand order

Passes the dest-mask unit tests now.

* shader_jit_a64: Use `MOVI` for DestEnable mask

Accelerate certain cases of masking with MOVI as well

Co-authored-by: JosJuice <JosJuice@users.noreply.github.com>

* shader_jit/tests: Add source-swizzle unit test

This is not expansive. Generating all `4^4` cases seems to make Catch2
crash. So I've added some component-masking(non-reordering) tests based
on the Dest-Mask unit-test and some additional ones to test
broadcasts/splats and component re-ordering.

* shader_jit_a64: Fix swizzle index generation

This was still generating `SHUFPS` indices and not the ones that we wanted for the `TBL` instruction. Passes all unit tests now.

* shader_jit/tests: Add `ShaderSetup` constructor to `ShaderTest`

Rather than using the direct output of `CompileShaderSetup` allow a
`ShaderSetup` object to be passed in directly.  This enabled the ability
emit assembly that is not directly supported by nihstro.

* shader_jit/tests: Add `CALL` unit-test

Tests nested `CALL` instructions to eventually reach an `EX2`
instruction.

EX2 is picked in particular since it is implemented as an even deeper
dispatch and ensures subroutines are properly implemented between `CALL`
instructions and implementation-calls.

* shader_jit_a64: Fix nested `BL` subroutines

`lr` was getting writen over by nested calls to `BL`, causing undefined
behavior with mixtures of `CALL`, `EX2`, and `LG2` instructions.

Each usage of `BL` is now protected with a stach push/pop to preserve
and restore teh `lr` register to allow nested subroutines to work
properly.

* shader_jit/tests: Allocate generated tests on heap

Each of these generated shader-test objects were causing the stack to
overflow.  Allocate each of the generated tests on the heap and use
unique_ptr so they only exist within the life-time of the `REQUIRE`
statement.

* shader_jit_a64: Preserve `lr` register from external function calls

`EMIT` makes an external function call, and should be preserving `lr`

* shader_jit/tests: Add `MAD` unit-test

The Inline Asm version requires an upstream fix:
https://github.com/neobrain/nihstro/issues/68

Instead, the program code is manually configured and added.

* shader_jit/tests: Fix uninitialized instructions

These `union`-type instruction-types were uninitialized, causing tests
to indeterminantly fail at times.

* shader_jit_a64: Remove unneeded `MOV`

Residue from the direct-port of x64 code.

* shader_jit_a64: Use `std::array` for `instr_table`

Add some type-safety and const-correctness around this type as well.

* shader_jit_a64: Avoid c-style offset casting

Add some more const-correctness to this function as well.

* video_core: Add arch preprocessor comments

* common/aarch64: Use X16 as the veneer register

https://developer.arm.com/documentation/102374/0101/Procedure-Call-Standard

* shader_jit/tests: Add uniform reading unit-test

Particularly to ensure that addresses are being properly truncated

* common/aarch64: Use `X0` as `ABI_RETURN`

`X8` is used as the indirect return result value in the case that the
result is bigger than 128-bits. Principally `X0` is the general-case
return register though.

* common/aarch64: Add veneer register note

`LR` is generally overwritten by `BLR` anyways, and would also be a safe
veneer to utilize for far-calls.

* shader_jit_a64: Remove unneeded scratch register from `SanitizedMul`

* shader_jit_a64: Fix CALLU condition

Should be `EQ` not `NE`. Fixes the regression on Kid Icarus.
No known regressions anymore!

---------

Co-authored-by: merryhime <merryhime@users.noreply.github.com>
Co-authored-by: JosJuice <JosJuice@users.noreply.github.com>
2023-11-05 21:40:31 +01:00
Steveice10
27bad3a699
audio_core: Replace AAC decoders with single FAAD2-based decoder. (#7098) 2023-11-04 14:56:13 -07:00
Castor215
89d5d4a2b6
externals: allow user to use system cubeb (#7107) 2023-11-02 17:33:40 -07:00
Castor215
8d811913a5
externals: allow user to use system cryptopp (#7105) 2023-11-01 17:57:10 -07:00
Castor215
d3ce43782d
externals: allow users to use system libenet (#7100) 2023-10-31 14:01:50 -07:00
Castor215
4ac10c4a9d
externals: allow users to use system Zstandard (#7083) 2023-10-21 16:10:02 -07:00
Castor215
2416258117
externals: add overarching USE_SYSTEM_LIBS variable (#7078) 2023-10-20 17:02:20 -07:00
Steveice10
1caf569f16
externals: Update cryptopp-cmake and cryptopp. (#7041) 2023-10-17 11:03:03 -07:00
Castor215
2d83fff581
externals: allow user to use system glslang (#7075) 2023-10-17 11:02:50 -07:00
Steveice10
e49b3c75bd
externals: Make system dynamic library headers flags instead of auto-detect. (#7065) 2023-10-16 19:32:58 -07:00
Castor215
956b0868fd
externals: allow user to use system inih (#7073) 2023-10-16 19:31:56 -07:00
Castor215
3d55270de6
externals: allow users to use system xbyak (#7068) 2023-10-13 15:03:50 -07:00