diff options
author | riperiperi <rhy3756547@hotmail.com> | 2023-01-13 00:31:21 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-13 01:31:21 +0100 |
commit | 8fa248ceb4cbc9d199bbac1d968df8b168106c2c (patch) | |
tree | 678ca26d2a909c6a85aba13a1b03df704cabfa2e /Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs | |
parent | 30862b5ffd6848b1296da23bc8bb7e9f96bb7e60 (diff) |
Vulkan: Add workarounds for MoltenVK (#4202)1.1.549
* Add MVK basics.
* Use appropriate output attribute types
* 4kb vertex alignment, bunch of fixes
* Add reduced shader precision mode for mvk.
* Disable ASTC on MVK for now
* Only request robustnes2 when it is available.
* It's just the one feature actually
* Add triangle fan conversion
* Allow NullDescriptor on MVK for some reason.
* Force safe blit on MoltenVK
* Use ASTC only when formats are all available.
* Disable multilevel 3d texture views
* Filter duplicate render targets (on backend)
* Add Automatic MoltenVK Configuration
* Do not create color attachment views with formats that are not RT compatible
* Make sure that the host format matches the vertex shader input types for invalid/unknown guest formats
* FIx rebase for Vertex Attrib State
* Fix 4b alignment for vertex
* Use asynchronous queue submits for MVK
* Ensure color clear shader has correct output type
* Update MoltenVK config
* Always use MoltenVK workarounds on MacOS
* Make MVK supersede all vendors
* Fix rebase
* Various fixes on rebase
* Get portability flags from extension
* Fix some minor rebasing issues
* Style change
* Use LibraryImport for MVKConfiguration
* Rename MoltenVK vendor to Apple
Intel and AMD GPUs on moltenvk report with the those vendors - only apple silicon reports with vendor 0x106B.
* Fix features2 rebase conflict
* Rename fragment output type
* Add missing check for fragment output types
Might have caused the crash in MK8
* Only do fragment output specialization on MoltenVK
* Avoid copy when passing capabilities
* Self feedback
* Address feedback
Co-authored-by: gdk <gab.dark.100@gmail.com>
Co-authored-by: nastys <nastys@users.noreply.github.com>
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs')
-rw-r--r-- | Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs b/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs index e5e48626..70ac5017 100644 --- a/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs +++ b/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs @@ -88,6 +88,11 @@ namespace Ryujinx.Graphics.Gpu.Shader public bool HasUnalignedStorageBuffer; /// <summary> + /// Type of the fragment shader outputs. + /// </summary> + public Array8<AttributeType> FragmentOutputTypes; + + /// <summary> /// Creates a new GPU graphics state. /// </summary> /// <param name="earlyZForce">Early Z force enable</param> @@ -105,6 +110,7 @@ namespace Ryujinx.Graphics.Gpu.Shader /// <param name="attributeTypes">Type of the vertex attributes consumed by the shader</param> /// <param name="hasConstantBufferDrawParameters">Indicates that the draw is writing the base vertex, base instance and draw index to Constant Buffer 0</param> /// <param name="hasUnalignedStorageBuffer">Indicates that any storage buffer use is unaligned</param> + /// <param name="fragmentOutputTypes">Type of the fragment shader outputs</param> public GpuChannelGraphicsState( bool earlyZForce, PrimitiveTopology topology, @@ -120,7 +126,8 @@ namespace Ryujinx.Graphics.Gpu.Shader float alphaTestReference, ref Array32<AttributeType> attributeTypes, bool hasConstantBufferDrawParameters, - bool hasUnalignedStorageBuffer) + bool hasUnalignedStorageBuffer, + ref Array8<AttributeType> fragmentOutputTypes) { EarlyZForce = earlyZForce; Topology = topology; @@ -137,6 +144,7 @@ namespace Ryujinx.Graphics.Gpu.Shader AttributeTypes = attributeTypes; HasConstantBufferDrawParameters = hasConstantBufferDrawParameters; HasUnalignedStorageBuffer = hasUnalignedStorageBuffer; + FragmentOutputTypes = fragmentOutputTypes; } } }
\ No newline at end of file |