Commit graph

5464 commits

Author SHA1 Message Date
ReinUsesLisp
d5c0c34383 vk_pipeline_cache: Enable int8 and int16 types on Vulkan 2021-07-22 21:51:30 -04:00
ReinUsesLisp
33a769ea26 gl_rasterizer: Flush L2 caches before glFlush on GLASM 2021-07-22 21:51:30 -04:00
ReinUsesLisp
826796b51f glasm: Initial GLASM compute implementation for testing 2021-07-22 21:51:30 -04:00
ReinUsesLisp
99ae172ef2 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
ReinUsesLisp
3fca53bce8 vk_query_cache: Wait before reading queries 2021-07-22 21:51:30 -04:00
ReinUsesLisp
dbe29b8bb6 vk_master_semaphore: Use fetch_add to increase master semaphore tick 2021-07-22 21:51:30 -04:00
ReinUsesLisp
947a36e79e gl_shader_cache: Remove code unintentionally committed 2021-07-22 21:51:30 -04:00
ReinUsesLisp
055db41f19 Move SPIR-V emission functions to their own header 2021-07-22 21:51:30 -04:00
ReinUsesLisp
5ca5988c63 shader: Initial OpenGL implementation 2021-07-22 21:51:30 -04:00
ReinUsesLisp
884a937022 spirv: Support OpenGL uniform buffers and change bindings 2021-07-22 21:51:29 -04:00
FernandoS27
6aff9b4476 shader: Address feedback 2021-07-22 21:51:29 -04:00
FernandoS27
a2fac91c47 shader: Implement VertexA stage 2021-07-22 21:51:29 -04:00
ReinUsesLisp
806c5a3739 vk_graphics_pipeline: Fix texture buffer descriptors 2021-07-22 21:51:29 -04:00
ReinUsesLisp
b62b8f2e84 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
ReinUsesLisp
eb7ef12b95 vk_compute_pass: Fix -Wshadow warning 2021-07-22 21:51:29 -04:00
ReinUsesLisp
ed6c131c92 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
ReinUsesLisp
fd502a4d43 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
ReinUsesLisp
896a4fe9b5 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
ReinUsesLisp
a3b025c6a4 vk_graphics_pipeline: Generate specialized pipeline config functions and improve code 2021-07-22 21:51:29 -04:00
ReinUsesLisp
565d922014 shader: Accelerate pipeline transitions and use dirty flags for shaders 2021-07-22 21:51:29 -04:00
ReinUsesLisp
ecd481a0ca vk_compute_pipeline: Fix index comparison oversight on compute texture buffers 2021-07-22 21:51:29 -04:00
ReinUsesLisp
d835906b9f vulkan_device: Require shaderClipDistance and shaderCullDistance features 2021-07-22 21:51:29 -04:00
ReinUsesLisp
1f47476089 vk_graphics_pipeline: Guard against non-tessellation pipelines using patches 2021-07-22 21:51:29 -04:00
Rodrigo Locatti
72b10edd15 shader: Fix bugs and build issues on GCC 2021-07-22 21:51:29 -04:00
ReinUsesLisp
fa439cb6df shader: Fix render targets with null attachments 2021-07-22 21:51:29 -04:00
ReinUsesLisp
9b691a28d8 shader: Require dual source blending 2021-07-22 21:51:29 -04:00
ReinUsesLisp
052317e748 shader: Implement indexed textures 2021-07-22 21:51:28 -04:00
ReinUsesLisp
6236b611cf shader: Move microinstruction header to the value header 2021-07-22 21:51:28 -04:00
ReinUsesLisp
7066f9ef7b shader: Implement D3D samplers 2021-07-22 21:51:28 -04:00
FernandoS27
6c60109967 shader: Implement SR_Y_DIRECTION 2021-07-22 21:51:28 -04:00
ReinUsesLisp
cc96469019 shader: Implement PIXLD.MY_INDEX 2021-07-22 21:51:28 -04:00
ReinUsesLisp
b6b541e36a spirv: Implement ViewportMask with NV_viewport_array2 2021-07-22 21:51:28 -04:00
ReinUsesLisp
38908d0f7e shader: Implement tessellation shaders, polygon mode and invocation id 2021-07-22 21:51:27 -04:00
lat9nq
212f5c8050 vk_pipeline_cache: Silence GCC warnings
Silences `-Werror=missing-field-initializers` due to missing
initializers.
2021-07-22 21:51:27 -04:00
ReinUsesLisp
03c16b085a spirv: Implement image buffers 2021-07-22 21:51:27 -04:00
ameerj
542dc35aac spirv: Implement alpha test 2021-07-22 21:51:27 -04:00
ReinUsesLisp
e59971ea1b shader: Implement transform feedbacks and define file format 2021-07-22 21:51:27 -04:00
ReinUsesLisp
4a6c299e3f shader: Implement early Z tests 2021-07-22 21:51:27 -04:00
ReinUsesLisp
c84c2ab88c spirv: Rework storage buffers and shader memory 2021-07-22 21:51:27 -04:00
ReinUsesLisp
4b32692423 shader: Implement geometry shaders 2021-07-22 21:51:27 -04:00
ReinUsesLisp
7c867c2d7c pipeline_helper: Simplify descriptor objects initialization 2021-07-22 21:51:27 -04:00
ameerj
62c3bef607 shader: Implement ATOM/S and RED 2021-07-22 21:51:27 -04:00
ReinUsesLisp
619f68db8e nsight_aftermath_tracker: Report used shaders to Nsight Aftermath 2021-07-22 21:51:27 -04:00
ReinUsesLisp
480ce24b7e spirv: Guard against typeless image reads on unsupported devices 2021-07-22 21:51:27 -04:00
ReinUsesLisp
7f8b92cc2d vk_rasterizer: Request outside render pass execution context for compute 2021-07-22 21:51:27 -04:00
ReinUsesLisp
9a49eed4d6 pipeline_helper: Add missing [[maybe_unused]] 2021-07-22 21:51:27 -04:00
ReinUsesLisp
5ab1ac4f29 shader: Implement SULD and SUST 2021-07-22 21:51:26 -04:00
lat9nq
5b95114cd4 shader: Address feedback + clang format 2021-07-22 21:51:26 -04:00
lat9nq
a4e7a41e7f shader_recompiler,video_core: Cleanup some GCC and Clang errors
Mostly fixing unused *, implicit conversion, braced scalar init,
fpermissive, and some others.

Some Clang errors likely remain in video_core, and std::ranges is still
a pertinent issue in shader_recompiler

shader_recompiler: cmake: Force bracket depth to 1024 on Clang
Increases the maximum fold expression depth

thread_worker: Include condition_variable

Don't use list initializers in control flow

Co-authored-by: ReinUsesLisp <reinuseslisp@airmail.cc>
2021-07-22 21:51:26 -04:00
ReinUsesLisp
3e6cb6362d shader: Interact texture buffers with buffer cache 2021-07-22 21:51:26 -04:00