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
Henrik Rydgard
32f37723f9
Properly use VK_KHR_dedicated_allocation to make some drivers extra happy
2019-02-05 18:07:18 +01:00
Henrik Rydgard
8e1a5ef3d6
Minor refactor of physical device property/feature detection, to allow for more extension use.
2019-02-05 18:07:17 +01:00
Henrik Rydgard
f339a0c15b
VK: Minor cleanup, turn off unfinished and probably wrong use of dedicated allocation feature
2019-01-31 14:09:21 +01:00
Henrik Rydgård
bb4d91c958
If we lose the Vulkan device, recommend the user to switch to Direct3D11.
...
:-(
2019-01-30 17:57:20 +01:00