aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/Translation
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2021-01-29 00:38:51 -0300
committerGitHub <noreply@github.com>2021-01-29 14:38:51 +1100
commitf93089a64f9586863e8a261af932d125e78230df (patch)
tree9899a0075441cbaa620d2dbf7609909c2d8b0bde /Ryujinx.Graphics.Shader/Translation
parent9c2f851d3946a2b789e8c00432c60c8d690299a7 (diff)
Implement geometry shader passthrough (#1961)
* Implement geometry shader passthrough * Cache version change
Diffstat (limited to 'Ryujinx.Graphics.Shader/Translation')
-rw-r--r--Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs4
-rw-r--r--Ryujinx.Graphics.Shader/Translation/ShaderHeader.cs4
2 files changed, 8 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs b/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs
index 637ce8fe..b1fd6470 100644
--- a/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs
+++ b/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs
@@ -6,6 +6,8 @@ namespace Ryujinx.Graphics.Shader.Translation
{
public ShaderStage Stage { get; }
+ public bool GpPassthrough { get; }
+
public OutputTopology OutputTopology { get; }
public int MaxOutputVertices { get; }
@@ -33,6 +35,7 @@ namespace Ryujinx.Graphics.Shader.Translation
public ShaderConfig(IGpuAccessor gpuAccessor, TranslationFlags flags, TranslationCounts counts)
{
Stage = ShaderStage.Compute;
+ GpPassthrough = false;
OutputTopology = OutputTopology.PointList;
MaxOutputVertices = 0;
LocalMemorySize = 0;
@@ -51,6 +54,7 @@ namespace Ryujinx.Graphics.Shader.Translation
public ShaderConfig(ShaderHeader header, IGpuAccessor gpuAccessor, TranslationFlags flags, TranslationCounts counts)
{
Stage = header.Stage;
+ GpPassthrough = header.Stage == ShaderStage.Geometry && header.GpPassthrough;
OutputTopology = header.OutputTopology;
MaxOutputVertices = header.MaxOutputVertexCount;
LocalMemorySize = header.ShaderLocalMemoryLowSize + header.ShaderLocalMemoryHighSize;
diff --git a/Ryujinx.Graphics.Shader/Translation/ShaderHeader.cs b/Ryujinx.Graphics.Shader/Translation/ShaderHeader.cs
index 1218d591..ff5932e1 100644
--- a/Ryujinx.Graphics.Shader/Translation/ShaderHeader.cs
+++ b/Ryujinx.Graphics.Shader/Translation/ShaderHeader.cs
@@ -81,6 +81,8 @@ namespace Ryujinx.Graphics.Shader.Translation
public int SassVersion { get; }
+ public bool GpPassthrough { get; }
+
public bool DoesLoadOrStore { get; }
public bool DoesFp64 { get; }
@@ -136,6 +138,8 @@ namespace Ryujinx.Graphics.Shader.Translation
SassVersion = commonWord0.Extract(17, 4);
+ GpPassthrough = commonWord0.Extract(24);
+
DoesLoadOrStore = commonWord0.Extract(26);
DoesFp64 = commonWord0.Extract(27);