421 Commits

Author SHA1 Message Date
Henrik Rydgård 6009bf7b74 Merge pull request #12952 from unknownbrackets/vulkan-safesize
Vulkan: Match safe size behavior on all backends
2020-07-13 15:59:09 +02:00
Henrik Rydgård 0c489e2d0d We need to check for renderpass change and dirty here too. What a mess.. 2020-06-02 11:18:42 +02:00
Henrik Rydgård f4dcbe9d28 Vulkan DrawEngine: Move the renderstep changed check until after the last place where it can change. 2020-06-02 09:50:20 +02:00
Henrik Rydgård bebf649705 OpenGL/Vulkan: Rework the contract around dynamic state. Removes some ugly dirtying from the GL render manager. 2020-05-24 20:27:58 +02:00
Unknown W. Brackets ea1f0a1195 Vulkan: Match safe size behavior on all backends.
Before, we would not mark a safe size for some Vulkan clears where depth
was not cleared, deviating from other backends.  We also never detected
that on PowerVR.  This makes things more consistent.
2020-05-23 00:25:39 -07:00
Unknown W. Brackets ef43ec5f33 GPU: Split up software transform into phases. 2020-05-08 23:09:24 -07:00
Unknown W. Brackets ac60e2ecd4 GPU: Track HW tess at start of frame too.
This also makes it so we don't force the setting off when you change
backends, and just ignore it if unsupported.
2020-04-04 11:52:32 -07:00
Unknown W. Brackets c42fb72419 GPU: Update uniforms w/ consistent render mode too. 2020-04-04 11:03:07 -07:00
Unknown W. Brackets ad98609819 GPU: Use consistent buffered rendering state.
The setting can be changed in Qt and Windows between frames, so let's
track the current setting in most places.  This is everywhere fbman is
easily accessible.
2020-04-04 10:51:47 -07:00
Henrik Rydgård 21eaef04fc Vulkan: Pick shaders after calling ConvertStateToVulkanKey because it may end up disabling shader blending
(due to too many copies, see DrawEngineCommon::ApplyShaderBlending).

(So much state leaking all over the place ... I want to redesign the
whole thing).

Typo fix in comment
2020-03-29 15:02:40 +02:00
Henrik Rydgård 92a1395cd0 Apply viewport before SoftwareTransform so flipping can be checked 2020-01-26 15:30:20 +01:00
Henrik Rydgård a355f49c91 Also experiment with a "copy shader" that just does raw data manipulation into GPU local memory, then copies to image from there. 2019-09-29 10:39:12 -07:00
Henrik Rydgård 02a96e29bb Fix a comment 2019-09-09 00:52:23 +02:00
Henrik Rydgård 70ec327b40 Vulkan: Slim down and rename the Mali hack. 2019-09-09 00:43:31 +02:00
Henrik Rydgård 0462c01228 Workaround ARM Mali depth hardware bug. Fixes #11937
When triangles coincide with the Z=1 plane in specific ways, triggered
by Burnout Legends' sky for example, the depth buffer gets corrupted.

This is worked around here by slightly rescaling Z. This type of
workaround is recommended by ARM driver engineers.

Ugly but what can you do when the hardware is bugged. I've done quick
tests on a number of games with no issues.
2019-09-08 23:44:26 +02:00
Henrik Rydgård 06b04f65a0 Vulkan: Narrow down buffer usage flags a little bit. 2019-03-14 12:41:39 +01:00
Henrik Rydgard 9736bc431a The block transfer setting should not affect clearing memory behind a render target, especially since that's already gated behind a compat flag. 2019-02-08 14:46:16 +01:00
Henrik Rydgard e30daa8027 Remove unused API, assorted cleanup.
No longer enable the geometry shader feature, no plans to use it.
2019-02-05 21:31:43 +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
Unknown W. Brackets b1e68c653c GPU: Avoid a missing virtual destructor warning. 2018-12-01 13:59:47 -08:00
Henrik Rydgård 9c6f7000b7 New spline stuff seems to need bigger storage buffer pools 2018-11-11 22:52:37 +01:00
xebra eca9386c05 [spline/bezier]Reduce static buffers. Get rid of the spline buffer using half of the vertex buffer. 2018-10-07 23:54:31 +09:00
xebra ef53195ae8 [spline/bezier]Surround with namespace Spline. 2018-10-07 23:54:28 +09:00
xebra 41823f8780 [spline/bezier]Fix GLES texture resolution of HW tess to real 2D to avoid huge width in FF4CC mist dragon morphing. 2018-10-07 23:54:23 +09:00
xebra 89786b943d [spline/bezier]Instanced rendering for B-Spline is very slow when using weak GPU, so disabled it and simplify the shaders.
Add changing the quality of HW tessellation.
2018-10-07 23:54:22 +09:00
xebra a48a5b32f0 [spline/bezier]Unify hardware tessellation of bezier and spline. 2018-10-07 23:54:06 +09:00
xebra 3c0fb44f2e [spline/bezier]Improve hwtess to use cached weights. 2018-10-07 23:54:05 +09:00
xebra 966ff32ee7 [spline/bezier]Improve the logic of copying control-points. 2018-10-07 23:53:36 +09:00
Unknown W. Brackets a4c0640f01 GE Debugger: Factor out host calls some.
Moving more of this to cross platform for the web debugger.
2018-09-01 08:32:03 -07:00
Unknown W. Brackets 9bac603976 GPU: Use HW transform for flat spline/bezier.
We can control the provoking vertex here, but it's less likely to matter.
2018-06-28 19:30:20 -07:00
Unknown W. Brackets e2c217ab29 Core: More consistently use config enums. 2018-06-23 10:59:18 -07:00
Unknown W. Brackets d1fa9b97a3 GPU: Remove some unused fields. 2018-06-17 11:26:09 -07:00
Henrik Rydgård 03175b74ef Merge pull request #10957 from unknownbrackets/depal-bounds2
GPU: Dirty tex when clearing or rendering to self
2018-06-06 22:22:01 +02:00
Unknown W. Brackets 2606365ba4 GPU: Use software transform for flat shading.
Except on GLES where it works fine with the default provoking index.

This fixes #10969 so that it works everywhere.
2018-06-06 05:53:50 -07:00
Unknown W. Brackets dca159c47e GPU: Correct sw flat shading color on Vulkan/D3D.
It was only correct on GLES before.  This only fixes software transform.
2018-06-06 05:53:50 -07:00
Unknown W. Brackets 61fc1cdcfb GPU: Dirty tex when clearing or rendering to self.
This way if we're blitting, we'll re-blit.
2018-06-06 05:52:49 -07:00
Henrik Rydgård b037efdb55 If there are multiple Vulkan devices, show a setting to allow the user to choose. 2018-06-06 10:20:12 +02:00
Henrik Rydgård 9485b04914 Never bind a NULL image view in Vulkan no matter what. 2018-06-01 18:51:37 +02:00
Unknown W. Brackets e7d07aff71 Vulkan: Update shaders/state when dirty properly.
Can't have been right before.
2018-05-27 22:28:09 -07:00
Henrik Rydgård 413a204138 Vulkan: Semi-gross hack that massively improves the perf of MGS2:Acid. 2018-04-13 17:32:56 +02:00
Henrik Rydgård 81276c8862 Fix various bugs. 2018-04-13 14:19:05 +02:00
Henrik Rydgård 29c41c6a35 Implement shader depal for Vulkan. See #10908. Bilinear filter not yet implemented. 2018-04-13 14:19:01 +02:00
Henrik Rydgård a3ed87bca5 Some comment fixes and cleanup.
Not much point warning for those MIPS instructions - if games use them,
they use them carefully because games can't catch that exception anyway.
2018-04-12 12:00:19 +02:00
Henrik Rydgård 36fd2711d6 Revert "Remove further remains of hardware skinning."
This reverts commit 40db61a680.
2018-04-10 12:22:41 +02:00
Henrik Rydgård 8953d7ff73 Revert "Comment fixes, reindentation."
This reverts commit 6fa9fcefb2.
2018-04-10 12:14:23 +02:00
Unknown W. Brackets 5f27a2e60a Vulkan: Track tags on emu textures. 2018-04-06 21:43:18 -07:00
Henrik Rydgård f1359af0b0 Vulkan: Improve handling of shader compile failures (don't crash) 2018-03-19 17:46:58 +01:00
Henrik Rydgård 614cabb115 Implement pipeline/shader cache for Vulkan, to avoid shader compile stutters on second and subsequent runs.
The raw pipeline cache got pretty large. Instead, store IDs like GL.

There's still a disabled option to store the pipeline cache objects.
2018-03-16 21:03:03 +01:00
Henrik Rydgård 8dc85c1a60 Vulkan pipeline: Merge a few property fields to a flags field.
To make saving/loading them easier.
2018-03-16 17:38:02 +01:00
Henrik Rydgård 3cd92b4d90 Vulkan: Add a (disabled) facility to force image layouts to GENERAL, for debugging barrier issues 2018-03-15 16:23:23 +01:00