2015-04-22 18:15:18 +02:00
|
|
|
[submodule "boost"]
|
2016-09-02 05:00:15 +02:00
|
|
|
path = externals/boost
|
2024-03-04 22:35:41 +01:00
|
|
|
url = https://github.com/PabloMK7/ext-boost.git
|
2015-04-22 18:15:18 +02:00
|
|
|
[submodule "nihstro"]
|
2016-09-02 05:00:15 +02:00
|
|
|
path = externals/nihstro
|
|
|
|
url = https://github.com/neobrain/nihstro.git
|
2016-04-24 15:18:30 +02:00
|
|
|
[submodule "soundtouch"]
|
2016-09-02 05:00:15 +02:00
|
|
|
path = externals/soundtouch
|
2023-04-26 00:25:02 +02:00
|
|
|
url = https://codeberg.org/soundtouch/soundtouch.git
|
2022-09-21 18:36:12 +02:00
|
|
|
[submodule "catch2"]
|
|
|
|
path = externals/catch2
|
|
|
|
url = https://github.com/catchorg/Catch2
|
2016-09-02 05:00:15 +02:00
|
|
|
[submodule "dynarmic"]
|
|
|
|
path = externals/dynarmic
|
2024-03-04 22:35:41 +01:00
|
|
|
url = https://github.com/PabloMK7/dynarmic.git
|
2016-12-11 23:59:28 +01:00
|
|
|
[submodule "xbyak"]
|
|
|
|
path = externals/xbyak
|
|
|
|
url = https://github.com/herumi/xbyak.git
|
2017-05-27 23:22:35 +02:00
|
|
|
[submodule "fmt"]
|
|
|
|
path = externals/fmt
|
|
|
|
url = https://github.com/fmtlib/fmt.git
|
2017-07-16 22:02:36 +02:00
|
|
|
[submodule "enet"]
|
2017-07-07 21:34:15 +02:00
|
|
|
path = externals/enet
|
2017-12-04 02:35:54 +01:00
|
|
|
url = https://github.com/lsalzman/enet.git
|
|
|
|
[submodule "inih"]
|
|
|
|
path = externals/inih/inih
|
|
|
|
url = https://github.com/benhoyt/inih.git
|
2018-03-24 20:19:35 +01:00
|
|
|
[submodule "libressl"]
|
|
|
|
path = externals/libressl
|
2024-03-04 22:35:41 +01:00
|
|
|
url = https://github.com/PabloMK7/ext-libressl-portable.git
|
2020-08-26 04:21:32 +02:00
|
|
|
[submodule "libusb"]
|
|
|
|
path = externals/libusb/libusb
|
|
|
|
url = https://github.com/libusb/libusb.git
|
2018-05-25 07:18:13 +02:00
|
|
|
[submodule "cubeb"]
|
|
|
|
path = externals/cubeb
|
2022-09-21 18:36:12 +02:00
|
|
|
url = https://github.com/mozilla/cubeb
|
2018-08-20 11:20:33 +02:00
|
|
|
[submodule "discord-rpc"]
|
|
|
|
path = externals/discord-rpc
|
2024-03-04 22:35:41 +01:00
|
|
|
url = https://github.com/PabloMK7/discord-rpc.git
|
2018-10-27 09:35:01 +02:00
|
|
|
[submodule "cpp-jwt"]
|
2018-12-06 13:14:54 +01:00
|
|
|
path = externals/cpp-jwt
|
|
|
|
url = https://github.com/arun11299/cpp-jwt.git
|
|
|
|
[submodule "teakra"]
|
|
|
|
path = externals/teakra
|
|
|
|
url = https://github.com/wwylele/teakra.git
|
2019-08-18 01:43:40 +02:00
|
|
|
[submodule "lodepng"]
|
|
|
|
path = externals/lodepng/lodepng
|
|
|
|
url = https://github.com/lvandeve/lodepng.git
|
2019-09-07 23:15:04 +02:00
|
|
|
[submodule "zstd"]
|
|
|
|
path = externals/zstd
|
|
|
|
url = https://github.com/facebook/zstd.git
|
2021-12-12 15:52:30 +01:00
|
|
|
[submodule "libyuv"]
|
|
|
|
path = externals/libyuv
|
|
|
|
url = https://github.com/lemenkov/libyuv.git
|
2022-09-21 18:36:12 +02:00
|
|
|
[submodule "sdl2"]
|
|
|
|
path = externals/sdl2/SDL
|
|
|
|
url = https://github.com/libsdl-org/SDL
|
2023-01-15 17:15:42 +01:00
|
|
|
[submodule "cryptopp-cmake"]
|
|
|
|
path = externals/cryptopp-cmake
|
|
|
|
url = https://github.com/abdes/cryptopp-cmake.git
|
2023-02-02 16:26:21 +01:00
|
|
|
[submodule "cryptopp"]
|
|
|
|
path = externals/cryptopp
|
|
|
|
url = https://github.com/weidai11/cryptopp.git
|
2023-04-27 06:38:28 +02:00
|
|
|
[submodule "dds-ktx"]
|
|
|
|
path = externals/dds-ktx
|
|
|
|
url = https://github.com/septag/dds-ktx
|
2023-06-05 16:29:05 +02:00
|
|
|
[submodule "openal-soft"]
|
|
|
|
path = externals/openal-soft
|
|
|
|
url = https://github.com/kcat/openal-soft
|
|
|
|
[submodule "glslang"]
|
|
|
|
path = externals/glslang
|
|
|
|
url = https://github.com/KhronosGroup/glslang
|
|
|
|
[submodule "vma"]
|
|
|
|
path = externals/vma
|
|
|
|
url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
|
|
|
|
[submodule "vulkan-headers"]
|
|
|
|
path = externals/vulkan-headers
|
|
|
|
url = https://github.com/KhronosGroup/Vulkan-Headers
|
|
|
|
[submodule "sirit"]
|
|
|
|
path = externals/sirit
|
2024-03-04 22:35:41 +01:00
|
|
|
url = https://github.com/PabloMK7/sirit
|
2023-11-04 22:56:13 +01:00
|
|
|
[submodule "faad2"]
|
|
|
|
path = externals/faad2/faad2
|
|
|
|
url = https://github.com/knik0/faad2
|
2023-06-17 01:06:18 +02:00
|
|
|
[submodule "library-headers"]
|
2023-10-17 04:32:58 +02:00
|
|
|
path = externals/library-headers
|
2024-03-04 22:35:41 +01:00
|
|
|
url = https://github.com/PabloMK7/ext-library-headers.git
|
2023-09-13 00:28:50 +02:00
|
|
|
[submodule "libadrenotools"]
|
|
|
|
path = externals/libadrenotools
|
|
|
|
url = https://github.com/bylaws/libadrenotools
|
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
|
|
|
[submodule "oaknut"]
|
|
|
|
path = externals/oaknut
|
|
|
|
url = https://github.com/merryhime/oaknut.git
|