aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-08-29 21:10:34 -0300
committerGitHub <noreply@github.com>2023-08-29 21:10:34 -0300
commitf09bba82b9366e5912b639a610ae89cbb1cf352c (patch)
tree4811ffa52206eed7cf8aa200c64deb7410e5c56b /src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs
parent93d78f9ac4a37a50f0cc2e57addd330d072af742 (diff)
Geometry shader emulation for macOS (#5551)1.1.1002
* Implement vertex and geometry shader conversion to compute * Call InitializeReservedCounts for compute too * PR feedback * Set clip distance mask for geometry and tessellation shaders too * Transform feedback emulation only for vertex
Diffstat (limited to 'src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs')
-rw-r--r--src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs b/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs
index ff9c39a1..600c8a98 100644
--- a/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs
+++ b/src/Ryujinx.Graphics.Gpu/Shader/CachedShaderProgram.cs
@@ -15,6 +15,16 @@ namespace Ryujinx.Graphics.Gpu.Shader
public IProgram HostProgram { get; }
/// <summary>
+ /// Optional vertex shader converted to compute.
+ /// </summary>
+ public ShaderAsCompute VertexAsCompute { get; }
+
+ /// <summary>
+ /// Optional geometry shader converted to compute.
+ /// </summary>
+ public ShaderAsCompute GeometryAsCompute { get; }
+
+ /// <summary>
/// GPU state used to create this version of the shader.
/// </summary>
public ShaderSpecializationState SpecializationState { get; }
@@ -45,12 +55,25 @@ namespace Ryujinx.Graphics.Gpu.Shader
Bindings = new CachedShaderBindings(shaders.Length == 1, shaders);
}
+ public CachedShaderProgram(
+ IProgram hostProgram,
+ ShaderAsCompute vertexAsCompute,
+ ShaderAsCompute geometryAsCompute,
+ ShaderSpecializationState specializationState,
+ CachedShaderStage[] shaders) : this(hostProgram, specializationState, shaders)
+ {
+ VertexAsCompute = vertexAsCompute;
+ GeometryAsCompute = geometryAsCompute;
+ }
+
/// <summary>
/// Dispose of the host shader resources.
/// </summary>
public void Dispose()
{
HostProgram.Dispose();
+ VertexAsCompute?.HostProgram.Dispose();
+ GeometryAsCompute?.HostProgram.Dispose();
}
}
}