376aa94819
shader: Rename maxwell/program.h to translate_program.h
2021-07-22 21:51:38 -04:00
8fb2048934
vk_rasterizer: Exit render passes on fragment barriers
2021-07-22 21:51:35 -04:00
dbf7cb9f90
vk_graphics_pipeline: Fix path with no VK_EXT_extended_dynamic_state
2021-07-22 21:51:35 -04:00
41cca8b8ad
vk_pipeline_cache: Skip cached pipelines with different dynamic state
2021-07-22 21:51:35 -04:00
ea038d6653
vulkan: Add VK_EXT_vertex_input_dynamic_state support
...
Reduces the number of total pipelines generated on Vulkan.
Tested on Super Smash Bros. Ultimate.
2021-07-22 21:51:35 -04:00
cb78a1b494
shader: Reorder shader cache directories
2021-07-22 21:51:35 -04:00
3025b2f605
vk_rasterizer: Implement first index
2021-07-22 21:51:35 -04:00
d554778311
vulkan: Use VK_EXT_provoking_vertex when available
2021-07-22 21:51:35 -04:00
cffd4716c5
vk_pipeline_cache,shader_notify: Add shader notifications
2021-07-22 21:51:35 -04:00
48aad8dc05
vk_pipeline_cache: Add asynchronous shaders
2021-07-22 21:51:35 -04:00
2a0aeaa3d2
vk_rasterizer: Flush work on clear and dispatches
2021-07-22 21:51:34 -04:00
f45f7b5c2a
vk_swapchain: Handle outdated swapchains
...
Fixes pixelated presentation on Intel devices.
2021-07-22 21:51:34 -04:00
b02c78b276
vk_buffer_cache: Handle null texture buffers
...
Fixes a crash on Age of Calamity cutscenes.
2021-07-22 21:51:34 -04:00
8c954fcaee
vk_pipeline_cache: Set support_derivative_control to true
2021-07-22 21:51:34 -04:00
4a2361a1e2
buffer_cache: Reduce uniform buffer size from shader usage
...
Increases performance significantly on certain titles.
2021-07-22 21:51:34 -04:00
46bd362d0d
fixed_pipeline_state: Use regular for loop instead of ranges for perf
...
MSVC generates better code for it.
2021-07-22 21:51:34 -04:00
d26271b014
vk_swapchain: Avoid recreating the swapchain on each frame
...
Recreate only when requested (or sRGB is changed) instead of tracking
the frontend's size. That size is still used as a hint.
2021-07-22 21:51:34 -04:00
1148a4eac7
vulkan: Conditionally use shaderInt16
...
Add support for Polaris AMD devices.
2021-07-22 21:51:34 -04:00
77372443c3
vulkan: Enable depth bounds and use it conditionally
...
Intel devices pre-Xe don't support this.
2021-07-22 21:51:34 -04:00
c44b16124f
vk_buffer_cache: Add transform feedback usage to buffers
2021-07-22 21:51:34 -04:00
916ca74324
opengl: Declare fragment outputs even if they are not used
...
Fixes Ori and the Blind Forest's menu on GLASM. For some reason
(probably high level optimizations) it is not sanitized on SPIR-V for
OpenGL. Vulkan is unaffected by this change.
2021-07-22 21:51:34 -04:00
a7e9756671
buffer_cache: Mark uniform buffers as dirty if any enable bit changes
2021-07-22 21:51:34 -04:00
b7764c3a79
shader: Handle host exceptions
2021-07-22 21:51:34 -04:00
a49532c8eb
video_core,shader: Clang-format fixes
2021-07-22 21:51:33 -04:00
69b910e9e7
video_core: Abstract transform feedback translation utility
2021-07-22 21:51:33 -04:00
9e7b6622c2
shader: Split profile and runtime information in separate structs
2021-07-22 21:51:33 -04:00
568d813eea
vk_update_descriptor: Properly initialize payload on the update descriptor queue
2021-07-22 21:51:31 -04:00
01e18581b9
vk_pipeline_cache: Enable int8 and int16 types on Vulkan
2021-07-22 21:51:30 -04:00
36f1586267
vk_scheduler: Use locks instead of SPSC a queue
...
This tries to fix a data race where we'd wait forever for the GPU.
2021-07-22 21:51:30 -04:00
56c47951c5
vk_query_cache: Wait before reading queries
2021-07-22 21:51:30 -04:00
a515036604
vk_master_semaphore: Use fetch_add to increase master semaphore tick
2021-07-22 21:51:30 -04:00
bed090807a
Move SPIR-V emission functions to their own header
2021-07-22 21:51:30 -04:00
d621e96d0d
shader: Initial OpenGL implementation
2021-07-22 21:51:30 -04:00
48a17298d7
spirv: Support OpenGL uniform buffers and change bindings
2021-07-22 21:51:29 -04:00
c49d56c931
shader: Address feedback
2021-07-22 21:51:29 -04:00
b541f5e5e3
shader: Implement VertexA stage
2021-07-22 21:51:29 -04:00
f4b82b8dd7
vk_graphics_pipeline: Fix texture buffer descriptors
2021-07-22 21:51:29 -04:00
53acdda772
vk_scheduler: Allow command submission on worker thread
...
This changes how Scheduler::Flush works. It queues the current command
buffer to be sent to the GPU but does not do it immediately. The Vulkan
worker thread takes care of that. Users will have to use
Scheduler::Flush + Scheduler::WaitWorker to get the previous behavior.
Scheduler::Finish is unchanged.
To avoid waiting on work never queued, Scheduler::Wait sends the current
command buffer if that's what the caller wants to wait.
2021-07-22 21:51:29 -04:00
c5425b38c1
vk_compute_pass: Fix -Wshadow warning
2021-07-22 21:51:29 -04:00
025b20f96a
shader: Move pipeline cache logic to separate files
...
Move code to separate files to be able to reuse it from OpenGL. This
greatly simplifies the pipeline cache logic on Vulkan.
Transform feedback state is not yet abstracted and it's still
intrusively stored inside vk_pipeline_cache. It will be moved when
needed on OpenGL.
2021-07-22 21:51:29 -04:00
ac8835659e
vulkan: Defer descriptor set work to the Vulkan thread
...
Move descriptor lookup and update code to a separate thread. Delaying
this removes work from the main GPU thread and allows creating
descriptor layouts on another thread. This reduces a bit the workload
of the main thread when new pipelines are encountered.
2021-07-22 21:51:29 -04:00
2f3c3dfc10
vulkan: Rework descriptor allocation algorithm
...
Create multiple descriptor pools on demand. There are some degrees of
freedom what is considered a compatible pool to avoid wasting large
pools on small descriptors.
2021-07-22 21:51:29 -04:00
5ed871398b
vk_graphics_pipeline: Generate specialized pipeline config functions and improve code
2021-07-22 21:51:29 -04:00
f4ace63957
shader: Accelerate pipeline transitions and use dirty flags for shaders
2021-07-22 21:51:29 -04:00
8fda599a31
vk_compute_pipeline: Fix index comparison oversight on compute texture buffers
2021-07-22 21:51:29 -04:00
5b1b06f11e
vk_graphics_pipeline: Guard against non-tessellation pipelines using patches
2021-07-22 21:51:29 -04:00
2dc86372c7
shader: Fix bugs and build issues on GCC
2021-07-22 21:51:29 -04:00
7a1f296cda
shader: Fix render targets with null attachments
2021-07-22 21:51:29 -04:00
d10cf55353
shader: Implement indexed textures
2021-07-22 21:51:28 -04:00
050e81500c
shader: Move microinstruction header to the value header
2021-07-22 21:51:28 -04:00