emufan4568
8152881f06
renderer_vulkan: Allocate descriptor sets during reinterpretation
2022-10-14 21:03:11 +03:00
emufan4568
0f4dc90acc
renderer_vulkan: Enable logic ops and fix swapchain resizing
2022-10-14 21:03:11 +03:00
emufan4568
d77574100d
renderer_vulkan: Clear stencil with renderpass
...
* Fixes outline retension in pokemon games
2022-10-14 21:03:11 +03:00
emufan4568
c10cf4414f
renderer_vulkan: Fix pipeline cache crashes
2022-10-14 21:03:11 +03:00
GPUCode
4d7a00f324
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-14 21:03:11 +03:00
GPUCode
e56d069ed5
renderer_opengl: Fix broken texture copy
...
* Resolves graphical bugs in Professor Layton vs Ace Attorney when using OpenGL
2022-10-14 21:03:11 +03:00
GPUCode
e33adc1b11
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-14 21:03:11 +03:00
GPUCode
11de7700aa
video_core: Fix renderpass cache bug and introduce RGBA -> BGR converter
2022-10-14 21:03:11 +03:00
GPUCode
b0fc94f155
renderer_opengl: Specify precision in compute shader and add RGB5A1 converter
...
* Fixes OpenGLES crash
2022-10-14 21:03:11 +03:00
GPUCode
0d4e530805
renderer_vulkan: Complete hardware shader support
...
* With these changes all commercial games I tested work fine and get a massive performance boost
2022-10-14 21:03:11 +03:00
GPUCode
9a1cf869f9
renderer_vulkan: Begin hardware shader support
...
* Still experimental and works only with homebrew
2022-10-14 21:03:11 +03:00
GPUCode
523120e03d
citra: Fix build issues with MinGW and MSVC
2022-10-14 21:03:11 +03:00
GPUCode
7f26562dce
renderer_vulkan: Fix warnings and cleanup
2022-10-14 21:03:11 +03:00
GPUCode
f750da1508
code: Run clang-format
2022-10-14 21:03:11 +03:00
GPUCode
711b699689
code: Address build issues
2022-10-14 21:03:11 +03:00
GPUCode
7f7408b81e
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-14 21:03:11 +03:00
GPUCode
2da4c9ca90
citra_qt: Add physical device selection dialog
2022-10-14 21:03:11 +03:00
GPUCode
20ccb995b1
code: Resolve unused variable warnings
2022-10-14 21:03:11 +03:00
GPUCode
601aac2a26
renderer_opengl: Unbind unused framebuffer targets
...
* Fixes graphical glitches in many games for some reason
2022-10-14 21:03:11 +03:00
GPUCode
924257b2cc
renderer_opengl: Emulate texture copy with blit for now
2022-10-14 21:03:11 +03:00
GPUCode
9e34ff40ed
renderer_opengl: Address buffer overflow
2022-10-14 21:03:11 +03:00
GPUCode
ba3c84168a
video_core: Small code improvements
2022-10-14 21:03:11 +03:00
GPUCode
77d6be6bde
renderer_vulkan: Don't sample from mipmaps when using texture cubes
...
* Mipmaps for texture cubes are unimplemented in the rasterizer cache, so sampling from mipmaps will return nothing
2022-10-14 21:03:11 +03:00
GPUCode
a6e2bcd986
citra_qt: Switch all strings to multiarg
2022-10-14 21:03:11 +03:00
GPUCode
2c30889fdc
code: Address more compiler warnings
2022-10-14 21:03:11 +03:00
GPUCode
67a76bec5c
citra_qt: Fix more warnings/deprecated functions
2022-10-14 21:03:11 +03:00
GPUCode
98b7c33f62
input_common: Small fix
2022-10-14 21:03:11 +03:00
GPUCode
dbfa06c6b1
citra_qt: Improve graphics API intergration
...
* Add renderer debug option which toggles debug output in OpenGL/validation layers in Vulkan
* Fix many warnings and replace deprecated Qt functionailty with newer alternatives
2022-10-14 21:03:11 +03:00
GPUCode
88d0b7de13
rasterizer_cache: Code cleanup
...
* Merge utils and types to a single header
2022-10-14 21:03:11 +03:00
GPUCode
de149e3ee9
texture_decode: Prefer std::memcpy where possible
2022-10-14 21:03:11 +03:00
GPUCode
99877f9465
renderer_vulkan: Rework format handling
...
* This is a pretty large commit that aims to solve some issues with the current format system
* The instance now builds at application initialization an array of format traits for each pixel format
that includes information such as blit/attachment/storage support and fallback formats
* The runtime doesn't ask the instance for formats but receives these traits and can dedice on its own what to build
For now we do the same as before, we require both blit and attachment support
* Morton swizzling also sees many bug fixes. The previous code was very hacky and didn't work for partial
texture updates. It was also inconsistent, as it would take a tiled_buffer and write to the middle of linear
* Now the functions have been greatly simplified and adjusted to work better with std::span. This fixes out of bounds
errors and texture glitches (like the display in Mario Kart 7)
2022-10-14 21:03:11 +03:00
GPUCode
075090569f
renderer_vulkan: Handle scheduler switches properly
2022-10-14 21:03:10 +03:00
GPUCode
f6af97fc16
vk_platform: Fix wayland build
2022-10-14 21:03:10 +03:00
GPUCode
5fa4a32cf6
renderer_vulkan: Rewrite stream buffer + other fixes
...
* Emulate blend color and clip planes correctly
* Don't hack the depth in the vertex shader, use VK_EXT_depth_clip_control for now to set the range to -1, 1
* Rewrite the stream buffer to remove flickering problems. The new implementation doesn't try to be smart about holding memory. It divides the allocation in SCHEDULER_COMMAND_COUNT buckets and automatically switches between them based on the current slot index
2022-10-14 21:03:10 +03:00
GPUCode
fd77483a5f
vk_rasterizer: Bump vertex buffer size
...
* Helps with the stuttering, indicating the issue is with the vertex buffer somehow
2022-10-14 21:03:10 +03:00
GPUCode
1bf1217a18
pica_to_vk: Set cull mode correctly
2022-10-14 21:03:10 +03:00
GPUCode
40db7b90fa
renderer_vulkan: Minimize state changes
...
* Store current renderpass/pipelines and only rebind when they change
* Enable extended dynamic state support and only apply them when they change
2022-10-14 21:03:10 +03:00
GPUCode
8e1a23d971
rasterizer_cache: Explicitely pass end_offset to swizzle functions
...
* This addresses overflow issues
2022-10-14 21:03:10 +03:00
GPUCode
9e8c403793
renderer_vulkan: Implement partial color/depth clears
2022-10-14 21:03:10 +03:00
GPUCode
0e047a7a6e
renderer_vulkan: Add second screen and remove renderpass breakage
2022-10-14 21:03:10 +03:00
GPUCode
66158841cb
renderer_vulkan: Improve task scheduler synchronization
...
* Use multiple semaphores for swapchain sync and improve the Submit API
2022-10-14 21:03:10 +03:00
GPUCode
634e6427a8
renderer_vulkan: Use timeline semaphores if available
2022-10-14 21:03:10 +03:00
GPUCode
c1f46ed710
renderer_vulkan: Pipeline cache fixes
2022-10-14 21:03:10 +03:00
GPUCode
4776e21dd9
renderer_vulkan: Isolate surface creation to vk_platform.cpp
...
* Also cleanup the init code somewhat
2022-10-14 21:03:10 +03:00
GPUCode
9e7b3bfa16
renderer_vulkan: Add ABGR -> RGBA byteswap
...
* Vulkan doesn't support VK_FORMAT_R8G8B8A8_UNORM_PACK32 unfortunately. Fixes graphical issues on the gpusprites demo
2022-10-14 21:03:10 +03:00
GPUCode
62d561c004
externals: Trim down glslang build
...
* When the install option is turned on, glslang will override the install dir which causes SDL2 to fail
2022-10-14 21:03:10 +03:00
GPUCode
34a0571dc3
common: math_util: Include <compare>
2022-10-14 21:03:10 +03:00
GPUCode
e46970a84a
cmake: Lower cmake requirement to 3.14
2022-10-14 21:03:10 +03:00
GPUCode
ccb1872604
renderer_vulkan: Address more validation errors and stop memory leakage
...
* The transition settings are temporary until I write a proper layout tracking system
2022-10-14 21:03:10 +03:00
emufan4568
1cd0b04399
renderer_vulkan: Fix some validation errors
...
* Temporarily add glm until I figure out how to fix the alignment
2022-10-14 21:03:10 +03:00