aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs
AgeCommit message (Collapse)Author
2023-05-31Skip draws with zero vertex count (#5149)gdkchan
2023-05-29Make sure blend is disabled if render target has integer format (#5122)gdkchan
* Make sure blend is disabled if render target has integer format * Change approach to avoid permanently mutating state
2023-05-29Workaround for MoltenVK barrier issues (#5118)gdkchan
2023-05-29Fix incorrect vertex attribute format change (#5112)gdkchan
* Fix incorrect vertex attribute format change * Only change vertex format if the host supports the new format
2023-05-28Add support for VK_EXT_depth_clip_control. (#5027)cstamford
* Add support for VK_EXT_depth_clip_control. * Code review feedback Minor formatting Co-authored-by: gdkchan <gab.dark.100@gmail.com> * Check .DepthClipControl to make sure the host actually supports the feature. * Review feedback: remove Vulkan platform switch, relying on QueryHostSupportsDepthClipControl to drive the behaviour - OpenGL returns true, and any future platforms that don't support the [-1, 1] depth mode can return false for the transformation. --------- Co-authored-by: gdkchan <gab.dark.100@gmail.com>
2023-05-18Fix Vulkan blit-like operations swizzle (#5003)gdkchan
2023-05-08Vulkan: Batch vertex buffer updates (#4843)riperiperi
* Vulkan: Batch vertex buffer updates Some games can bind a large number of vertex buffers for draws. This PR allows for vertex buffers to be updated with one call rather than one per buffer. This mostly affects the AMD Mesa driver, the testing platform was Steam Deck with Super Mario Odyssey. It was taking about 12% before, should be greatly reduced now. A small optimization has been added to avoid looking up the same buffer multiple times, as a common pattern is for the same buffer to be bound many times in a row with different ranges. * Only rebind vertex buffers if they have changed * Address feedback
2023-05-03Vulkan: Record modifications after changing the framebuffer (#4775)riperiperi
Our Vulkan backend inserts image barriers when a texture is sampled after it is rendered. This is done via a "modification flag" which is set when a render target is unbound (presuming that a texture has finished drawing to it). Imagine the following scenario: - Game sets render target to texture A - Game renders to texture A - (render pass ends) - Game binds texture A to a sampler - Game sets render target to texture B - Renders to texture B using texture A (barrier required) Because of the previous behaviour, the check to add a barrier for sampling a texture actually happens before it is registered as modified, meaning no barrier was added at all. This isn't always the case, but it was definitely causing issues in Xenoblade 2. This doesn't fix any more complicated issues where a texture is repeatedly sampled while it is currently being rendered. Fixes visual glitches at lower resolutions in Xenoblade 2. May fix other cases.
2023-04-27Move solution and projects to srcTSR Berry