Commit Graph

9502 Commits

Author SHA1 Message Date
GPUCode
e90add52d2 cmake: Fork sirit
* Upstream is missing some required instructions
2022-12-25 22:29:04 +02:00
GPUCode
3c6ca2cc82 renderer_vulkan: Begin new fragment shader SPIR-V emitter 2022-12-25 22:29:04 +02:00
GPUCode
d1039d9a81 code: Address build issues 2022-12-25 22:29:04 +02:00
GPUCode
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
Steveice10
5dc92cd72b ci: Bundle MoltenVK with macOS builds. 2022-12-25 22:28:49 +02:00
Steveice10
d1503605a7 vulkan: Fix supported extension check 2022-12-25 22:28:49 +02:00
Steveice10
6426f7a319 vulkan: Use required portability instance extension on macOS. 2022-12-25 22:28:49 +02:00
Steveice10
3b9ed5234d ci: Fix macOS upload script calling wrong macpack. 2022-12-25 22:28:49 +02:00
Steveice10
763127605e qt: Extract CAMetalLayer from NSView to pass to MoltenVK. 2022-12-25 22:28:49 +02:00
GPUCode
b86b19d366 renderer_vulkan: Drop requirement for VK_EXT_depth_clip_control 2022-12-25 22:28:49 +02:00
GPUCode
3dd74c69c5 Revert "CI: dont upload macos artifacts (#6121)"
This reverts commit 30831e6367.
2022-12-25 22:28:49 +02:00
GPUCode
01af8e3f2c renderer_vulkan: Integrate MacOS wsi 2022-12-25 22:28:49 +02:00
GPUCode
474cccda33 video_core: Fix build issues on macos 2022-12-25 22:28:49 +02:00
GPUCode
6057b18172 renderer_vulkan: Emulate 3-component vertex formats when unsupported
* This fixes the crashes on AMD
2022-12-25 22:28:48 +02:00
GPUCode
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
GPUCode
3c79360fd3 gl_rasterizer: Cleanup and fix bugs 2022-12-25 22:28:48 +02:00
GPUCode
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
GPUCode
23417787f8 texture_downloader_es: Remove invalid operations 2022-12-25 22:28:48 +02:00
GPUCode
8946c1a7de gl_texture_runtime: Use OGLStreamBuffer for uploads/downloads
* Much better than the current implementation
2022-12-25 22:28:48 +02:00
GPUCode
5fe910b18f vk_stream_buffer: Cleanup flush barrier 2022-12-25 22:28:48 +02:00
GPUCode
3944cbdc19 video_core: Reorder microprofile defines 2022-12-25 22:28:48 +02:00
GPUCode
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
GPUCode
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
GPUCode
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
GPUCode
f11715a4f4 renderer_vulkan: Remove AttribType
* Use VertexAttributeFormat to avoid unnecessary enum casts
2022-12-25 22:28:15 +02:00
GPUCode
89c51371f7 video_core: Move HardwareVertex to RasterizerAccelerated 2022-12-25 22:28:15 +02:00
GPUCode
8076d893db video_core: Move api agnostic uniform updates to RasterizerAccelerated 2022-12-25 22:28:15 +02:00
GPUCode
72f8d520c9 renderer_vulkan: Fix swapchain resizing 2022-12-25 22:28:15 +02:00
GPUCode
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
GPUCode
3c09c03180 citra_qt: Refuse to enable debug option if the layers are not available 2022-12-25 22:24:28 +02:00
GPUCode
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
emufan4568
921444c2c9 externals: Update vulkan-headers 2022-12-25 22:23:46 +02:00
emufan4568
89d234f642 common: Remove concepts usage 2022-12-25 22:23:46 +02:00
Vitor Kiguchi
13771b805b renderer_vulkan: Fix shader hash type 2022-12-25 22:23:46 +02:00
emufan4568
2a71059490 code: Remove usages of std::ranges
* MacOS is still runining my C++ 20 fun
2022-12-25 22:23:46 +02:00
emufan4568
053221f155 renderer_vulkan: Prefer immediate over mailbox present mode 2022-12-25 22:23:46 +02:00
emufan4568
4868c361e7 renderer_vulkan: Bump vertex buffer size
* So software shaders don't crash
2022-12-25 22:23:46 +02:00
emufan4568
0c30dbf33e renderer_vulkan: Add more microprofile targets 2022-12-25 22:23:46 +02:00
emufan4568
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
emufan4568
b3fb260c84 renderer_vulkan: Fix allocation caching bug 2022-12-25 22:23:46 +02:00
emufan4568
599ca7caf7 renderer_opengl: Port scaled upload/download code from vulkan 2022-12-25 22:23:46 +02:00
emufan4568
abc0fd5e7b renderer_vulkan: Include algorithm in vk_common
* Appears to be a bug in vulkan-hpp
2022-12-25 22:23:46 +02:00
emufan4568
309b25d201 renderer_vulkan: Use linear filtering when possible
* Fixes blocky artifacts in Samus Returns
2022-12-25 22:23:46 +02:00
emufan4568
9ac7ef20b0 renderer_vulkan: Abstract descriptor management
* The pipeline cache was starting to get cluttered
2022-12-25 22:23:46 +02:00
emufan4568
ebade3594d renderer_vulkan: Bump descriptor set allocation limit 2022-12-25 22:23:46 +02:00
emufan4568
dca159d79f renderer_vulkan: Fix storage descriptor binding and respect color mask
* RGBA8 surfaces now expose an additional R32Uint view used for storage descriptors. The format is guaranteed by the spec to support atomic loads/stores. This requires the mutable flag which incurs a performance cost, but might be better than breaking the current renderpass each draw when rendering shadows, especially on mobile

* Color mask is also implemented which fixes Street Fighter and Monster Hunter Stories
2022-12-25 22:23:46 +02:00
emufan4568
7007d5822a renderer_vulkan: Implement depth uploads with blit 2022-12-25 22:23:46 +02:00
emufan4568
6f0fdf037f renderer_vulkan: Use intermediate copy when framebuffer is used both as attachment and shader input 2022-12-25 22:23:46 +02:00
emufan4568
58621b0eb6 renderer_vulkan: Respect disk shader option 2022-12-25 22:23:46 +02:00
emufan4568
e8eef5c586 renderer_vulkan: Fix staging buffer size 2022-12-25 22:23:46 +02:00