Commit Graph

9607 Commits

Author SHA1 Message Date
5478a4d634 vk_instance: Make DynamicLoader static
* That way we don't construct/destroy it all the time
2022-12-25 22:31:27 +02:00
8f87586495 citra_qt: Add SPIR-V shader option 2022-12-25 22:31:27 +02:00
7e3a0f524c externals: Update sirit 2022-12-25 22:29:05 +02:00
922019cc22 renderer_vulkan: Move fragment shader microprofile to a better place 2022-12-25 22:29:05 +02:00
41e9cdb645 shader_cache: Fix type deduction 2022-12-25 22:29:05 +02:00
e90add52d2 cmake: Fork sirit
* Upstream is missing some required instructions
2022-12-25 22:29:04 +02:00
3c6ca2cc82 renderer_vulkan: Begin new fragment shader SPIR-V emitter 2022-12-25 22:29:04 +02:00
d1039d9a81 code: Address build issues 2022-12-25 22:29:04 +02:00
8b8cee1a5a vk_instance: Remove depth clip control feature
* To not crash drivers that don't support it since we don't require it anymore
2022-12-25 22:28:49 +02:00
5dc92cd72b ci: Bundle MoltenVK with macOS builds. 2022-12-25 22:28:49 +02:00
d1503605a7 vulkan: Fix supported extension check 2022-12-25 22:28:49 +02:00
6426f7a319 vulkan: Use required portability instance extension on macOS. 2022-12-25 22:28:49 +02:00
3b9ed5234d ci: Fix macOS upload script calling wrong macpack. 2022-12-25 22:28:49 +02:00
763127605e qt: Extract CAMetalLayer from NSView to pass to MoltenVK. 2022-12-25 22:28:49 +02:00
b86b19d366 renderer_vulkan: Drop requirement for VK_EXT_depth_clip_control 2022-12-25 22:28:49 +02:00
3dd74c69c5 Revert "CI: dont upload macos artifacts (#6121)"
This reverts commit 30831e6367.
2022-12-25 22:28:49 +02:00
01af8e3f2c renderer_vulkan: Integrate MacOS wsi 2022-12-25 22:28:49 +02:00
474cccda33 video_core: Fix build issues on macos 2022-12-25 22:28:49 +02:00
6057b18172 renderer_vulkan: Emulate 3-component vertex formats when unsupported
* This fixes the crashes on AMD
2022-12-25 22:28:48 +02:00
6a4ff8fa24 renderer_vulkan: Emulate logic op when unsupported
* Similar to GLES this is done to prepare for the android port
2022-12-25 22:28:48 +02:00
3c79360fd3 gl_rasterizer: Cleanup and fix bugs 2022-12-25 22:28:48 +02:00
939aafed40 vk_texture_runtime: Implement RGBA4 converter
* Fixes graphics in NES Remix. Need to also do a reinterpreter some time, but this will suffice for now
2022-12-25 22:28:48 +02:00
23417787f8 texture_downloader_es: Remove invalid operations 2022-12-25 22:28:48 +02:00
8946c1a7de gl_texture_runtime: Use OGLStreamBuffer for uploads/downloads
* Much better than the current implementation
2022-12-25 22:28:48 +02:00
5fe910b18f vk_stream_buffer: Cleanup flush barrier 2022-12-25 22:28:48 +02:00
3944cbdc19 video_core: Reorder microprofile defines 2022-12-25 22:28:48 +02:00
8ac3dd1840 renderer_vulkan: Rewrite stream buffer, again...
* The previous implemention was fine, but it wasted space. Buckets now are just ticks attached to a particular buffer region, which means we can flush/map arbitrary regions

* A bug in the texture runtime is also fixed which commited to the same buffer twice
2022-12-25 22:28:15 +02:00
ff34287e4b renderer_vulkan: Pack PicaFSConfig
* Using bitfields the struct size was reduced from 420 to 190 bytes. which should speed up hashing and copying to the worker thread
2022-12-25 22:28:15 +02:00
81f2a0eaa1 renderer_vulkan: Cleanup vertex array setup
* Also the function would commit more data then it requested leading to out of bound crashes
2022-12-25 22:28:15 +02:00
f11715a4f4 renderer_vulkan: Remove AttribType
* Use VertexAttributeFormat to avoid unnecessary enum casts
2022-12-25 22:28:15 +02:00
89c51371f7 video_core: Move HardwareVertex to RasterizerAccelerated 2022-12-25 22:28:15 +02:00
8076d893db video_core: Move api agnostic uniform updates to RasterizerAccelerated 2022-12-25 22:28:15 +02:00
72f8d520c9 renderer_vulkan: Fix swapchain resizing 2022-12-25 22:28:15 +02:00
f9274f8b9a renderer_vulkan: Add single-thread record ability to the scheduler
* Async is pretty nice but games that do a lot of flushes might have worse performance due to thread synchronization overhead

* I haven't noticed any cases of this yet but it doesn't hurt making this a UI option
2022-12-25 22:28:15 +02:00
3c09c03180 citra_qt: Refuse to enable debug option if the layers are not available 2022-12-25 22:24:28 +02:00
52251e3908 renderer_vulkan: Scheduler and presentation rewrite
* This commit ports yuzu's async scheduler replacing our older and crummier version
  Commands are recorded by the scheduler and processed by a separate worker thread.

* Queue submission is also moved to the worker thread which should alliviate slowdowns related to vkQueueSubmit stalls

* Fragment shader compilation and queue submission are also moved to that thread to reduce stutters
2022-12-25 22:23:46 +02:00
921444c2c9 externals: Update vulkan-headers 2022-12-25 22:23:46 +02:00
89d234f642 common: Remove concepts usage 2022-12-25 22:23:46 +02:00
13771b805b renderer_vulkan: Fix shader hash type 2022-12-25 22:23:46 +02:00
2a71059490 code: Remove usages of std::ranges
* MacOS is still runining my C++ 20 fun
2022-12-25 22:23:46 +02:00
053221f155 renderer_vulkan: Prefer immediate over mailbox present mode 2022-12-25 22:23:46 +02:00
4868c361e7 renderer_vulkan: Bump vertex buffer size
* So software shaders don't crash
2022-12-25 22:23:46 +02:00
0c30dbf33e renderer_vulkan: Add more microprofile targets 2022-12-25 22:23:46 +02:00
53370e81e2 renderer_vulkan: Improve StreamBuffer API and use it in TextureRuntime
* Also use separate upload and download buffers optimized for write and readback respectively. This gives a huge 20+ FPS boost in most games which were bottlenecked by slow reads
2022-12-25 22:23:46 +02:00
b3fb260c84 renderer_vulkan: Fix allocation caching bug 2022-12-25 22:23:46 +02:00
599ca7caf7 renderer_opengl: Port scaled upload/download code from vulkan 2022-12-25 22:23:46 +02:00
abc0fd5e7b renderer_vulkan: Include algorithm in vk_common
* Appears to be a bug in vulkan-hpp
2022-12-25 22:23:46 +02:00
309b25d201 renderer_vulkan: Use linear filtering when possible
* Fixes blocky artifacts in Samus Returns
2022-12-25 22:23:46 +02:00
9ac7ef20b0 renderer_vulkan: Abstract descriptor management
* The pipeline cache was starting to get cluttered
2022-12-25 22:23:46 +02:00
ebade3594d renderer_vulkan: Bump descriptor set allocation limit 2022-12-25 22:23:46 +02:00