Commit Graph
145 Commits
Author SHA1 Message Date
Henrik Rydgård b86d26da42 Remove wrong assert. Should fix #13354 2020-08-30 10:13:16 +02:00
Henrik Rydgård 0b8e377872 Address feedback from #13341. 2020-08-27 22:59:27 +02:00
Henrik Rydgård 95a4cd37fc Improve LogSteps further. Break out PreprocessSteps. 2020-08-27 21:50:05 +02:00
Henrik Rydgård 6e9d5ffbd7 VulkanRenderManager: Improve logging. LogSteps output is much better.
More logging improvements
2020-08-27 21:50:05 +02:00
Henrik Rydgård d54e0b3231 Fix longstanding depth/stencil view issue in Vulkan. Cleans up validation.
We didn't specify DEPTH|STENCIL as aspects for views we rendered to,
only DEPTH. Who knows how many of the driver bugs we "found" are this.

DEPTH|STENCIL views can't be sampled though, so we create a separate
DEPTH view for that. This keeps Katamari working.
2020-08-27 21:23:41 +02:00
Henrik Rydgård 5d64fc5ff1 Switch to PPSSPP's assert functions (don't use the system's) 2020-08-16 10:01:10 +02:00
Henrik Rydgård 5eb13378c6 Remove base/logging from a lot more files in native 2020-08-15 19:09:00 +02:00
Henrik Rydgård 86355779d7 Remove partial comment 2020-08-09 20:49:08 +02:00
Henrik Rydgård ba0d04a142 Vulkan: Implement depth texturing through depal. 2020-08-09 20:31:04 +02:00
Henrik Rydgård 375da0a2fe Some fixes 2020-08-09 19:47:22 +02:00
Henrik Rydgård cf122e9333 Vulkan/generic: Initial prep for depth texturing 2020-08-09 19:47:15 +02:00
Henrik Rydgård fd41c9cd57 These convenience overloads don't work in 32-bit builds, remove them. 2020-08-09 10:28:37 +02:00
Henrik Rydgård fbf6008a03 Set debug names for more framebuffers and textures 2020-08-09 09:36:54 +02:00
Henrik Rydgård 6aa3681f7c Minor logging improvements 2020-08-02 15:41:00 +02:00
Henrik Rydgård c5e0b799d9 Remove category from _assert_msg_ functions. We don't filter these by category anyway.
Fixes the inconsistency where we _assert_ didn't take a category but
_assert_msg_ did.
2020-07-19 20:33:25 +02:00
Henrik Rydgård f5afb2dbbd Improve some logging, and print the line number from PanicAlerts. 2020-07-19 11:10:51 +02:00
Henrik Rydgård b5e7220ed1 Switch to a fence instead for readbacks. Some sources suggest this is better than idling a queue or device.
Like https://stackoverflow.com/questions/39537176/in-what-situations-is-vkfence-better-than-vkqueuewaitidle-for-vkqueuesubmit .

Additionally, this is easier to refactor and loosen up if we can in the
future.
2020-07-14 09:06:07 +02:00
Henrik Rydgård e66f034fb3 Readback: Downgrade from vkWaitDeviceIdle to vkWaitQueueIdle. Probably effectively pretty much the same. 2020-07-14 09:06:07 +02:00
Henrik Rydgård e8370b94c0 Remove irrelevant comment 2020-07-13 18:14:12 +02:00
Henrik Rydgård dc6e7a7938 Move the Vulkan swapchain out-of-date checking to the vkQueuePresentKHR call. 2020-07-13 18:14:12 +02:00
Henrik Rydgård cd1d73436d Vulkan: Recreate the swapchain if we get too many "out of date" frames.
Should help an issue on my Linux laptop with Intel GPU.
2020-06-22 00:45:05 +02:00
Henrik Rydgård 737688a22a Annotate calls to RebindFramebuffer with their cause. 2020-06-02 09:51:38 +02:00
Unknown W. Brackets 40a0525aea Vulkan: Ensure depth/stencil load match on Mali. 2020-05-25 12:14:03 -07:00
Unknown W. Brackets c90c29df32 Vulkan: Trivially kill more empty steps.
Just in case we have a DONT_CARE step.
2020-05-25 12:04:18 -07:00
Unknown W. Brackets 24c844445e GPU: Don't allow step id to decrease at a sync.
This might've caused us to miss necessary dynamic state dirtying in games,
but only in fairly specific cases.  But it happens a lot when stepping via
the GE debugger.
2020-05-24 22:39:29 -07:00
Unknown W. Brackets c8f8d55118 Vulkan: Correct viewport flag reset on rebind.
Can't break since we're checking two separate flags.
2020-05-24 21:36:23 -07:00
Henrik Rydgård 4aec10d04f Correct an issue where reformat didn't work if no renderpass was active due to the use of clear.
Also instantly convert to a clear when binding the framebuffer in cases
when we know it's the optimal thing. The QueueRunner would have later merged
anyway hopefully, but I like the simplicity of this.
2020-05-21 12:01:15 +02:00
Henrik Rydgård fabe987c8f Add a name tag for all render steps (GL/Vulkan). Helps with debugging and should be cheap enough (a single pointer per "step"). 2020-05-21 11:24:05 +02:00
Henrik Rydgård d37893d1ac Track scissors like we track viewports (bugfix?). 2020-05-18 23:21:03 +02:00
Unknown W. Brackets d295feda82 Vulkan: Add asserts to catch no viewport render.
Also assert to prevent a sync outside a frame, which goes badly.

The curRenderStep_ reset on same fb made some debugging easier, but should
not actually be hit in any real case.
2020-05-17 21:01:08 -07:00
Unknown W. Brackets 47bc11a682 Vulkan: Generalize dependency tracking.
Might as well track on all steps.  We also can know if the dst was fully
written to here.
2020-05-17 11:06:39 -07:00
Henrik Rydgård b0b9e24d4e Vulkan: Fix minor vulkan resource leak if inflight frames isn't max. 2020-03-08 17:14:14 +01:00
Unknown W. Brackets 051a84e9bd GPU: Restart when changing inflight frames setting.
We need to keep the push and pull in step, so changing at runtime is
messy.
2020-03-02 19:21:15 -08:00
Unknown W. Brackets a91e206926 GPU: Add setting to control inflight frame usage. 2020-03-01 06:21:27 -08:00
Henrik Rydgård 2467fddc01 Vulkan GPU profiler: Measure the CPU time spent on the render thread recording command buffers. 2019-09-18 00:16:08 +02:00
Henrik Rydgård 93412aff3b Vulkan: Automatically merge render passes to the same target when possible.
Should speed things up a bit on mobile in some games that do stupid
things like GoW. Currently only enabled in GoW, but plan to enable this
globally as it should be quite cheap when nothing is detected.
2019-08-21 20:32:23 +02:00
Henrik Rydgård e3f1e563f2 Improve renderpass profiling descriptions a little 2019-08-21 18:31:01 +02:00
Henrik Rydgård 66609b395f Vulkan: Profile individual render passes/steps. 2019-08-21 16:47:46 +02:00
Henrik Rydgård 06a71fdf49 Get rid of numQueries 2019-08-21 10:30:57 +02:00
Henrik Rydgård 5fcac1a9e2 Vulkan: Disable some bad validation. Things are right and work fine. 2019-08-21 10:23:36 +02:00
Henrik Rydgård 19a443819b Bugfixes to VK gpu profiling. Properly get the valid bits. 2019-08-21 09:02:40 +02:00
Henrik Rydgård 653afeb7ab Vulkan: Implement basic integrated GPU profiling.
Currently simply measures the total GPU time of the frame. Will later be
extended to get the execution time of individual render passes.
2019-08-21 00:03:00 +02:00
Henrik Rydgård 49e64f10d4 Minor code cleanup 2019-08-12 23:36:35 +02:00
Henrik Rydgård cf06b4a947 Vulkan: Image views: The driver is probably smart enough to recognize a no-swizzle, but let's use the proper method. 2019-08-12 23:09:47 +02:00
Henrik Rydgård 213e2ccefc Vulkan: Add missing barrier when rendering to a target that's already in COLOR_OPTIMAL layout.
Fixes #12215
2019-08-08 15:38:09 +02:00
Henrik Rydgård 3b0624ff9f Some changes and asserts. 2019-08-08 14:07:53 +02:00
Henrik Rydgård 75e2366a6d Vulkan: Actually fix #12202, an array was out of scope where it was used, causing garbage flags. 2019-08-01 17:46:46 +02:00
Henrik Rydgård eb3faf5370 Fix some further static analysis warnings 2019-06-18 01:08:25 +02:00
Henrik Rydgård 58c240045e Make window resize work with Vulkan. Seems more stable now. 2019-02-23 15:53:05 +01:00
Henrik Rydgard f38a6650b1 VK code cleanup: Just a little helper for handling dedicated allocation for images. 2019-02-07 14:56:29 +01:00