emufan4568
a99be221b2
externals: Update vulkan-headers
2022-10-28 23:05:37 +03:00
emufan4568
f656610a41
common: Remove concepts usage
2022-10-28 23:05:37 +03:00
Vitor Kiguchi
cfa1a7b91c
citra_qt: Include unordered_map to fix macOS compilation
2022-10-28 23:05:37 +03:00
Vitor Kiguchi
52b1fc4889
renderer_vulkan: Fix shader hash type
2022-10-28 23:05:37 +03:00
emufan4568
01e2b6cdaa
code: Remove usages of std::ranges
...
* MacOS is still runining my C++ 20 fun
2022-10-28 23:05:37 +03:00
emufan4568
f75380fc93
renderer_vulkan: Prefer immediate over mailbox present mode
2022-10-28 23:05:37 +03:00
emufan4568
18af49a0ca
renderer_vulkan: Bump vertex buffer size
...
* So software shaders don't crash
2022-10-28 23:05:37 +03:00
emufan4568
c7e64f6c7b
renderer_vulkan: Add more microprofile targets
2022-10-28 23:05:37 +03:00
emufan4568
0a40a513a6
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-10-28 23:05:37 +03:00
emufan4568
a4dc6a55b7
renderer_vulkan: Fix allocation caching bug
2022-10-28 23:05:37 +03:00
emufan4568
7dce5be263
renderer_opengl: Port scaled upload/download code from vulkan
2022-10-28 23:05:37 +03:00
emufan4568
3f7d97da4c
renderer_vulkan: Include algorithm in vk_common
...
* Appears to be a bug in vulkan-hpp
2022-10-28 23:05:37 +03:00
emufan4568
a11b4dd051
renderer_vulkan: Use linear filtering when possible
...
* Fixes blocky artifacts in Samus Returns
2022-10-28 23:05:37 +03:00
emufan4568
c78847b2b6
renderer_vulkan: Abstract descriptor management
...
* The pipeline cache was starting to get cluttered
2022-10-28 23:05:37 +03:00
emufan4568
8faa7a6e02
renderer_vulkan: Bump descriptor set allocation limit
2022-10-28 23:05:37 +03:00
emufan4568
acf4b4e5fb
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-10-28 23:05:37 +03:00
emufan4568
3a0ca63d91
renderer_vulkan: Implement depth uploads with blit
2022-10-28 23:05:37 +03:00
emufan4568
1e96775203
renderer_vulkan: Use intermediate copy when framebuffer is used both as attachment and shader input
2022-10-28 23:05:37 +03:00
emufan4568
6d27e8be8d
renderer_vulkan: Respect disk shader option
2022-10-28 23:05:37 +03:00
emufan4568
c357a8b9b6
renderer_vulkan: Fix staging buffer size
2022-10-28 23:05:37 +03:00
emufan4568
7ad982f123
renderer_vulkan: Catch and log more runtime errors
...
* Also add the ability to enable command buffer dumping which is very useful
2022-10-28 23:05:37 +03:00
emufan4568
dd3d24bfec
renderer_vulkan: Batch allocate descriptor sets
...
* Less driver calls should lead to better performance
2022-10-28 23:05:37 +03:00
emufan4568
489bbb98b2
renderer_vulkan: Emulate border color if possible
2022-10-28 23:05:37 +03:00
emufan4568
5c9543e39d
renderer_vulkan: Implement scaled uploads and downloads
...
* This commit includes large changes to have textures are handling. Instead of using ImageAlloc, Surface is used instead which provides multiple benefits: automatic recycling on destruction and ability to use the TextureRuntime interface to simplify operations
* Layout tracking is also implemented which allows transitioning of individual mip levels without errors
* This fixes graphical errors in multiple games which relied on framebuffer uploads
2022-10-28 23:05:37 +03:00
emufan4568
49085d400c
renderer_vulkan: Fix renderpass issues
...
* The cache didn't take into account the framebuffer and render area used, so if these changed the renderpass wouldn't restart. This caused graphical bugs in Pokemon X/Y
2022-10-28 23:05:37 +03:00
emufan4568
8be9ea4f4a
renderer_vulkan: Update stencil compare mask
2022-10-28 23:05:37 +03:00
emufan4568
a71c288252
citra_qt: Fix graphics api indicator alignment
2022-10-28 23:04:38 +03:00
emufan4568
159809eb32
renderer_opengl: Fix OpenGLES issues
...
* Always request a 4.4 context until I figure out how to get Qt to cooperate
* Use RGBA for BGR since the converted table will do that conversion
2022-10-28 23:04:38 +03:00
emufan4568
2a4f0ce8de
renderer_vulkan: Report perf stats
2022-10-28 23:04:38 +03:00
emufan4568
4c8f1c83c8
renderer_vulkan: Better error handling
2022-10-28 23:04:38 +03:00
emufan4568
98f6d697d8
renderer_vulkan: Allow direct allocation of images
2022-10-28 23:04:38 +03:00
emufan4568
4636735783
renderer_vulkan: Fix incorrect depth format detection
...
* Intel iGPUs don't support blit on all depth/stencil formats which caused issues since the runtime checks for this while the renderpass cache does not
2022-10-28 23:04:38 +03:00
emufan4568
8a2770bf83
renderer_vulkan: Actually minize state changes
...
* Keep track of the current state and only update it when needed. Previously games would set the same state over and over cluttering renderdoc logs
2022-10-28 23:04:37 +03:00
emufan4568
f1e09c1ea1
renderer_vulkan: Fix broken sync without timeline semaphores
2022-10-28 23:04:37 +03:00
emufan4568
2423e645f1
renderer_vulkan: Allocate descriptor sets during reinterpretation
2022-10-28 23:04:37 +03:00
emufan4568
0eaae31f9f
renderer_vulkan: Enable logic ops and fix swapchain resizing
2022-10-28 23:04:37 +03:00
emufan4568
4f9b545296
renderer_vulkan: Clear stencil with renderpass
...
* Fixes outline retension in pokemon games
2022-10-28 23:04:37 +03:00
emufan4568
628d70e112
renderer_vulkan: Fix pipeline cache crashes
2022-10-28 23:04:37 +03:00
GPUCode
9991b9b12b
renderer_vulkan: Optimize tiled format convertion + fix vertex buffer alignment
...
* Integrate format convertion to the morton copy function, removing the need for an intermediate copy and convertion pass. This should be beneficial for performance especially since most games use tiled textures
* Also bump vertex buffer size to avoid crashes with hardware shaders and provide correct offset on normal draws which fixes glitches in pokemon Y
* Reduce the local group size to 8 in the D24S8 compute shader which fixes graphical issues in the afformentioned pokemon games at native resolution
* Set LOD to 0 instead of 0.25 to fix another glitch in pokemon y
2022-10-28 23:04:37 +03:00
GPUCode
e4bcf73c5a
renderer_opengl: Fix broken texture copy
...
* Resolves graphical bugs in Professor Layton vs Ace Attorney when using OpenGL
2022-10-28 23:04:37 +03:00
GPUCode
b693d205e4
renderer_vulkan: Pipeline cache fixes
...
* Delete cache file if found invalid
* Name it after the vendor/device ids so each physical devices gets a separate cache
2022-10-28 23:04:37 +03:00
GPUCode
91621ec202
video_core: Fix renderpass cache bug and introduce RGBA -> BGR converter
2022-10-28 23:04:37 +03:00
GPUCode
948f72d320
renderer_opengl: Specify precision in compute shader and add RGB5A1 converter
...
* Fixes OpenGLES crash
2022-10-28 23:04:37 +03:00
GPUCode
8c5b417486
renderer_vulkan: Complete hardware shader support
...
* With these changes all commercial games I tested work fine and get a massive performance boost
2022-10-28 23:04:37 +03:00
GPUCode
51685ee2db
renderer_vulkan: Begin hardware shader support
...
* Still experimental and works only with homebrew
2022-10-28 23:04:37 +03:00
GPUCode
079e4aa205
citra: Fix build issues with MinGW and MSVC
2022-10-28 23:04:37 +03:00
GPUCode
48edfb891b
renderer_vulkan: Fix warnings and cleanup
2022-10-28 23:04:37 +03:00
GPUCode
915406354c
code: Run clang-format
2022-10-28 23:04:31 +03:00
GPUCode
6f3fc32a93
code: Address build issues
2022-10-28 23:03:18 +03:00
GPUCode
ebfa98d31d
video_core: Re-implement format reinterpretation
...
* Same as before but D24S8 to RGBA8 is switched to a compute shader which should provide better throughput and is much simpler to implement in Vulkan
2022-10-28 23:03:18 +03:00