Commit graph

2298 commits

Author SHA1 Message Date
RMED24
4ed091ca42
Merge branch 'Ryujinx:master' into master 2022-06-22 16:56:35 +01:00
gdkchan
f2a41b7a1c
Rewrite kernel memory allocator (#3316)
* Rewrite kernel memory allocator

* Remove unused using

* Adjust private static field naming

* Change UlongBitSize to UInt64BitSize

* Fix unused argument, change argument order to be inline with official code and disable random allocation
2022-06-22 12:28:14 -03:00
RMED24
3b6fb29ec2 a 2022-06-22 11:14:08 +01:00
RMED24
f4c094aa98 Merge branch 'pr/3405' 2022-06-22 11:02:05 +01:00
RMED24
1100e5e1a6
Merge pull request #1 from gdkchan/vulkan-rel
Vulkan rel
2022-06-22 10:37:41 +01:00
gdk
6d277130da Adjust bindings array sizes 2022-06-22 00:11:17 -03:00
gdk
3b9bf0666f Increase light command buffer pool to 2 command buffers, throw rather than returning invalid cbs 2022-06-21 23:10:16 -03:00
RhavoX
c881cd2d14
Fix doubling of detected gamepads on program start (#3398)
* Fix doubling of detected gamepads (sometimes the connected event is fired when the app starts even though the pad was connected for some time now).

The fix rejects the gamepad if one with the same ID is already present.

* Fixed review findings
2022-06-20 19:01:55 +02:00
riperiperi
6096dd75b2 Handle the case where byte optionValues are sent to BSD
Some games and the Mario Odyssey Multiplayer mod do this.

The SMO multiplayer mod also needs you to revert #3394 as it uses a blocking socket to receive (otherwise it hangs), and it doesn't seem to like being forced as non-blocking.
2022-06-18 22:08:47 +01:00
riperiperi
cd3ad0a6ab Push descriptor support check, buffer redundancy checks
Should make push descriptors faster, needs more testing though.
2022-06-17 23:23:43 +01:00
gdk
db4e7d28ea Use push descriptors for uniform buffer updates (disabled for now) 2022-06-17 22:47:06 +01:00
riperiperi
f2b1cfe10c Fix D32S8 copy workaround (AMD)
Fixes water in Pokemon Legends Arceus on AMD GPUs. Possibly fixes other things.
2022-06-17 22:47:05 +01:00
Emmanuel Hansen
002bfc65ae Use selected gpu from config for avalonia (#7)
* use configured device

* address review
2022-06-17 22:47:05 +01:00
gdk
0860e208b2 Add missing clear layer parameter after rebase 2022-06-17 22:47:05 +01:00
gdk
0e06449f90 Pre-allocate arrays up front on DescriptorSetUpdater, allows the removal of some checks 2022-06-17 22:47:05 +01:00
gdk
e1e69f64bc Ensure all fences are destroyed on dispose 2022-06-17 22:47:05 +01:00
gdk
ed681977f9 If S8D24 is not supported, use D32FS8 2022-06-17 22:47:05 +01:00
gdk
8cac0e2b51 Fix error due to missing subpass dependency when Attachment Write -> Shader Read barriers are added 2022-06-17 22:47:05 +01:00
riperiperi
088ea4545c Fix and enable background compute shader compilation
Also disables warnings from shader cache pipeline misses.
2022-06-17 22:47:05 +01:00
gdk
d31360e7da Implement GPU selector and expose texture recompression on the UI and config 2022-06-17 22:47:04 +01:00
riperiperi
c98b61ade8 Use RobustBufferAccess on NVIDIA gpus
Avoids the SMO waterfall triangle on older NVIDIA gpus.
2022-06-17 22:47:04 +01:00
riperiperi
db5a1a6aa6 Workaround RADV crash
Enabling the descriptor indexing extension, even if it is not used, forces the radv driver to use "bolist".
2022-06-17 22:47:04 +01:00
gdk
378b3147b7 Remove pre-compiled shaderc binary for Windows as its no longer needed by default 2022-06-17 22:47:04 +01:00
gdk
c07abe4ec0 Pre-compile helper shader as SPIR-V, and some fixes 2022-06-17 22:47:04 +01:00
gdk
400ed2d96d Add minimal pipeline layouts that only contains used bindings
They are used by helper shaders, the intention is avoiding needing to recompile the shaders (from GLSL to SPIR-V) if the bindings changes on the translated guest shaders
2022-06-17 22:47:04 +01:00
gdk
38ecf0f117 Remove old CompileShader methods from the Vulkan backend 2022-06-17 22:47:03 +01:00
gdk
b6764620be Support multisample texture copy with automatic resolve on Vulkan 2022-06-17 22:47:03 +01:00
gdk
572759a4ac Combine non-buffer with buffer image descriptor sets 2022-06-17 22:47:03 +01:00
Emmanuel Hansen
8a1bdf1f1e Add support for avalonia (#6)
* add avalonia support

* only lock around skia flush

* addressed review

* cleanup

* add fallback size if avalonia attempts to render but the window size is 0. read desktop scale after enabling dpi check

* fix getting window handle on linux. skip render is size is 0
2022-06-17 22:47:03 +01:00
riperiperi
2000070330 Flush queries on attachment change rather than program change
Occlusion queries are usually used in a depth only pass so the attachments changing is a better indication of the query block ending.

Write mask changes are also considered since some games do depth only pass by setting 0 write mask on all the colour targets.
2022-06-17 22:47:03 +01:00
riperiperi
d4b9a6378f Bounds check on bitmap add. 2022-06-17 22:47:02 +01:00
gdk
1fac9dc29b If MultiViewport is not supported, do not try to set more than one viewport/scissor 2022-06-17 22:47:02 +01:00
gdk
74a8f37f8d Do not require null descriptors support 2022-06-17 22:47:02 +01:00
gdk
c832f55618 Fix inverse viewport transform vector type on SPIR-V 2022-06-17 22:47:02 +01:00
riperiperi
281f16aa36 Fix dependency 2022-06-17 22:47:02 +01:00
riperiperi
6ba93addf7 Fix BCn 4/5 conversion, GetTextureTarget
BCn 4/5 could generate invalid data when a line's size in bytes was not divisible by 4, which both backends expect.

GetTextureTarget was not creating a view with the replacement format.
2022-06-17 22:47:02 +01:00
gdk
782a0c4e93 Add support for BC6 and BC7 decompression, decompress all BC formats if they are not supported by the host 2022-06-17 22:47:02 +01:00
riperiperi
65cecb0c2f Fix headless build 2022-06-17 22:47:01 +01:00
riperiperi
d2cef41c5b Fix Avalonia Rebase
Vulkan is currently not available on Avalonia, but the build does work and you can use opengl.
2022-06-17 22:47:01 +01:00
riperiperi
52050e4d48 Fix gl_FragCoord.z transformation
FragCoord.z is always in 0-1, even when the real depth range is -1 to 1. Turns out the only bug was geo and tess stage outputs.

Fixes Pokemon Sword/Shield, possibly others.
2022-06-17 22:47:01 +01:00
riperiperi
f636810c6c Check for transform feedback query support
Sometimes transform feedback is supported without the query type.
2022-06-17 22:47:01 +01:00
riperiperi
d4ccb6b895 Return of the Vector Indexing Bug
One day, everyone will get this right.
2022-06-17 22:47:00 +01:00
riperiperi
9f0feb8879 Don't create query pools for unsupported query types 2022-06-17 22:47:00 +01:00
riperiperi
5a6a70e3d5 Fix typo 2022-06-17 22:47:00 +01:00
riperiperi
182c95a588 Vulkan/SPIR-V support for viewport inverse 2022-06-17 22:47:00 +01:00
riperiperi
884ee76d7c Update guest cache to v1.1 (due to specialization state changes)
This will explode your shader cache from earlier vulkan build, but it must be done. 😔
2022-06-17 22:47:00 +01:00
riperiperi
f21761555c Add Gl StencilOp enum values to Vulkan 2022-06-17 22:47:00 +01:00
riperiperi
a34efcd398 Remove gl_FragDepth scaling
This is always 0-1; the other two issues were causing the problems. Fixes regression with Xenoblade.
2022-06-17 22:47:00 +01:00
riperiperi
c3951877f7 Geometry Shader index count from ThreadsPerInputPrimitive
Generally fixes SPIR-V emitting too many triangles, may change games in OpenGL
2022-06-17 22:46:59 +01:00
riperiperi
8097480b02 Improvements to -1 to 1 depth mode.
- Transformation is only applied on the last stage in the vertex pipeline.
- Should fix some issues with geometry and tessellation (hopefully)
- Reading back FragCoord Z on fragment will transform back to -1 to 1.
2022-06-17 22:46:59 +01:00