Commit Graph

9669 Commits

Author SHA1 Message Date
GPUCode
5c401b8ea0 renderer_vulkan: Async presentation
* This rewrites a large portion of the presentation engine to be more thread safe
  and moves all swapchain usage to the presentation thread. Previously acquires were
  done on the main thread which required the next frame to wait for the previous one
  to finish presenting
* The new implementation is based on the OpenGL mailbox system, simplified. The screens
  are drawn on separate render frames that get sent to the presentation thread to be
  presented. Queue access is now thread safe as well.
2023-02-01 23:26:44 +02:00
GPUCode
bd3571db5a vk_blit_helper: Fix android crashes 2023-02-01 23:26:44 +02:00
GPUCode
b18710e4df renderer_vulkan: Emulate depth-stencil blits with VK_EXT_shader_stencil_export
* Should fix depth blits on AMD
2023-02-01 23:26:44 +02:00
Pengfei Zhu
99c3eb21b0 dist/languages: Migrate to new tx client 2023-02-01 14:57:12 +08:00
Morph
bb8cb3ff82 main: Globally disable the "?" button on dialogs (#6263)
Sets the AA_DisableWindowContextHelpButton attribute to disable this useless button globally. This is disabled by default on Qt6.
2023-01-28 21:38:15 +05:30
GPUCode
69b66cb41d renderer_vulkan: Implement VK_KHR_dynamic_rendering
* Removes the need for framebuffers/renderpass on desktop
2023-01-27 16:35:58 +02:00
PabloMK7
0f6478a928 Fix crash when plugin has missing text section (#6264) 2023-01-27 15:06:35 +02:00
GPUCode
a5f86e9813 renderer_vulkan: Move framebuffer handling to the renderpass cache 2023-01-27 00:27:26 +02:00
GPUCode
920492925c vk_shader_gen: Disable clip plane 1 when unused
* Fixes Star Fox 3D missing half the screen
2023-01-26 22:30:27 +02:00
GPUCode
0381081c5d Revert "vk_scheduler: wait for command processing to complete"
* This causes DispatchWork to stall and everything that calls it resulting in noticeable slowdown
2023-01-26 22:05:38 +02:00
GPUCode
382b64d3c0 surface_base: Fix issue with GetCopyableInterval 2023-01-26 15:04:15 +02:00
GPUCode
a629aa0dde renderer_vulkan: Check for VK_EXT_pipeline_creation_feedback
* Unused at the moment but will be useful later
2023-01-26 14:32:58 +02:00
GPUCode
b29f263e1b renderer_vulkan: Support additional dynamic states 2023-01-25 22:46:35 +02:00
GPUCode
48d3093fc8 vk_instance: Rework feature management
* Use a helper macro to always check for features. Previously it was assumed extension availability was also feature availability but this isn't the case. This is inspired by skyline's trait_manager
2023-01-25 22:46:10 +02:00
GPUCode
f77491196c vk_renderpass_cache: Create renderpasses on demand 2023-01-25 22:41:50 +02:00
GPUCode
0fce3e556f externals: Update vulkan-headers 2023-01-25 00:29:47 +02:00
GPUCode
12e69913c2 renderer_vulkan: Rework attribute format handling
* Centralize format support query to the instance similar to pixel formats
  In addition drop the component splitting. Favour scaled formats which don't require
  any shader casting to work and fallback to uint if necessary. Using scaled formats
  also has the benefit of reducing vertex shader permutations.
2023-01-25 00:25:08 +02:00
GPUCode
89217f8c4b vk_shader_gen_spv: Fix scissor test 2023-01-24 22:17:05 +02:00
GPUCode
247b6900c7 vk_swapchain: Fix incorrect image_count
* Sometimes the swapchain won't create as many images as requested. Adjust image_count for fix that
2023-01-23 23:30:06 +02:00
Steveice10
84e54a52a6 core: Detect and return error if GBA virtual console is loaded. (#6257) 2023-01-23 15:21:57 +05:30
Steveice10
d704c6a3ac common: Support macOS application data path conventions. (#6258) 2023-01-23 15:20:50 +05:30
GPUCode
1e42a40640 vk_shader_gen: Remove defines
* Causes shader compiler errors
2023-01-22 23:29:54 +02:00
GPUCode
7eab7b4151 android: Expose async shaders in the GUI 2023-01-22 10:33:19 +02:00
GPUCode
e9ccd51286 renderer_vulkan: Trim down used features 2023-01-22 10:33:19 +02:00
GPUCode
9f385ddeb7 vk_instance: Only check the portability extension on apple platforms 2023-01-22 10:33:19 +02:00
GPUCode
ab73566acc renderer_vulkan: Add suport for VK_EXT_debug_report
* Used in older android devices
2023-01-22 10:33:19 +02:00
GPUCode
1e3971038f vk_swapchain: Create semaphores at swapchain creation time
* Sometimes minImageCount is higher than 3 and that caused crashes
2023-01-22 10:33:19 +02:00
GPUCode
306943532c renderer_vulkan: Preliminary screenshot support
* It's broken for now but at least it doesn't crash
2023-01-22 10:33:19 +02:00
GPUCode
27698b0c93 vk_instance: Manually enable features
* We need these features so better force enable them and have the driver crash if they're unavailable.
2023-01-22 10:33:18 +02:00
GPUCode
d6cab3ab40 renderer_vulkan: Flush scheduler on renderpass end
* Follows the Mali guide recommendation and fixes performance regression introduced by async shaders commit
2023-01-22 10:33:18 +02:00
GPUCode
cbd9a6ffe3 vk_swapchain: Prefer scheduler finish
* The scheduler might have recorded a present that uses the to-be-destroyed semaphores. vkWaitIdle might miss this
2023-01-22 10:33:18 +02:00
GPUCode
4752818920 renderer_vulkan: Async shaders 2023-01-22 10:33:18 +02:00
JosJuice
9b20bcea0f android: Allow opening in-emulation menu by pressing Back (#6248)
It seems like the menu isn't showing up for users on Android 13.
We're not sure what's wrong, and the approach we've been using for the
menu hasn't been entirely reliable in the past either (in particular
not on non-mobile form factors like Chromebooks and VR devices),
so let's make it possible to open the menu by pressing Back,
an action that works reliably on most kinds of Android devices.
(Not sure if there's an equivalent of Back on devices like watches,
but I think we can pretty safely ignore those for now.)
2023-01-22 13:12:27 +05:30
Steveice10
131129062b ci: Fix macOS script permissions. (#24) 2023-01-17 20:47:40 +02:00
GPUCode
fad1ee7140 Merge branch 'master' into vulkan-2 2023-01-17 18:39:04 +02:00
Steveice10
b9ca7bef3f rasterizer_cache: Handle texture swizzle case with unaligned offsets in same tile. (#23) 2023-01-17 13:42:47 +02:00
Steveice10
0e0771ad74 Merge from latest upstream (#22)
* externals: bump xbyak to v6.68

* externals: point to upstream dynarmic

* build: Update to support multi-arch builds.

* ci: Generate universal macOS build.

* macOS: Make Citra show up in the Launchpad Games folder (#6245)

* Instead of there being an "Abort/Continue" prompt when a savestate fails to save or load, it just brings up a warning box. (#6236)

* This fixes #6041 by changing OnCoreError. Instead of there being an "Abort/Continue" prompt when a savestate fails to save or load, it just brings up a warning box.

I also changed "Abort/Continue" to "Quit Game/Continue" for better clarity

* Fixed formatting

* externals: Switch to newer cryptopp-cmake. (#6242)

* Implement svcGetHandleInfo, svcOpenProcess/Thread, svcGetProcessList (#6243)

* Implement svcGetHandleInfo, svcOpenProcess/Thread, svcGetProcessList

* Apply suggestions

* Add comment to stubbed enum values in svcGetHandleInfo

* Revert u32 -> size_t

Co-authored-by: SachinVin <sachinvinayak2000@gmail.com>
Co-authored-by: SachinVin <26602104+SachinVin@users.noreply.github.com>
Co-authored-by: UltraHDR <108294295+UltraHDR@users.noreply.github.com>
Co-authored-by: upadsamay387 <56898833+upadsamay387@users.noreply.github.com>
Co-authored-by: PabloMK7 <hackyglitch2@gmail.com>
2023-01-17 13:11:41 +02:00
PabloMK7
9c6035f254 Implement svcGetHandleInfo, svcOpenProcess/Thread, svcGetProcessList (#6243)
* Implement svcGetHandleInfo, svcOpenProcess/Thread, svcGetProcessList

* Apply suggestions

* Add comment to stubbed enum values in svcGetHandleInfo

* Revert u32 -> size_t
2023-01-15 21:50:54 +05:30
Steveice10
a298e4969b externals: Switch to newer cryptopp-cmake. (#6242) 2023-01-15 21:45:42 +05:30
upadsamay387
bd1cabce86 Instead of there being an "Abort/Continue" prompt when a savestate fails to save or load, it just brings up a warning box. (#6236)
* This fixes #6041 by changing OnCoreError. Instead of there being an "Abort/Continue" prompt when a savestate fails to save or load, it just brings up a warning box.

I also changed "Abort/Continue" to "Quit Game/Continue" for better clarity

* Fixed formatting
2023-01-15 21:45:16 +05:30
Steveice10
489248e77f video_core: De-duplicate texture format conversion logic. (#21)
* video_core: De-duplicate texture format conversion logic.

* video_core: Replace std::byte with u8 and remove excess linear texture converters.

* video_core: Remove implicit RGBA conversions from convert table for now, add comments explaining omissions.
2023-01-13 13:54:42 +02:00
Steveice10
f593268476 rasterizer_cache: Add converted swizzle mapping for D24 and log error for missing (un)swizzle functions. (#20) 2023-01-13 00:51:31 +02:00
Steveice10
8fcc3d2121 rasterizer_cache: Add morton conversion for D24 <-> D32 (#19) 2023-01-12 13:33:12 +02:00
Steveice10
a3a8964d46 renderer_vulkan: Centralize pixel format trait management. (#18)
* renderer_vulkan: Centralize pixel format trait management.

* renderer_vulkan: Add D24 <-> D32 conversion support.
2023-01-12 10:43:40 +02:00
GPUCode
c8d614139c vk_shader_gen_spv: Implement scissor testing
* Fixes weird looking map in LBW
2023-01-11 22:20:53 +02:00
GPUCode
25fe723fa6 renderer_vulkan: Support self copy
FE games copy parts of the framebuffer to itself. Don't switch layout in that case
2023-01-11 20:48:20 +02:00
GPUCode
2335b47f4b code: Run clang format 2023-01-11 20:48:20 +02:00
Vitor Kiguchi
10a7b60b12 ci: Fix android builds 2023-01-11 20:48:20 +02:00
GPUCode
98ab3c9610 common: Log more vulkan settings 2023-01-11 20:48:20 +02:00
GPUCode
0ca25b64e1 renderer_vulkan: Improve storage reinterpretation barriers 2023-01-11 20:48:20 +02:00