|
|
@@ -30,7 +30,6 @@ namespace Ryujinx.Graphics.OpenGL
|
|
|
private ProgramLinkStatus _status = ProgramLinkStatus.Incomplete;
|
|
|
private int[] _shaderHandles;
|
|
|
|
|
|
- public bool HasFragmentShader;
|
|
|
public int FragmentOutputMap { get; }
|
|
|
|
|
|
public Program(ShaderSource[] shaders, int fragmentOutputMap)
|
|
|
@@ -40,6 +39,7 @@ namespace Ryujinx.Graphics.OpenGL
|
|
|
GL.ProgramParameter(Handle, ProgramParameterName.ProgramBinaryRetrievableHint, 1);
|
|
|
|
|
|
_shaderHandles = new int[shaders.Length];
|
|
|
+ bool hasFragmentShader = false;
|
|
|
|
|
|
for (int index = 0; index < shaders.Length; index++)
|
|
|
{
|
|
|
@@ -47,7 +47,7 @@ namespace Ryujinx.Graphics.OpenGL
|
|
|
|
|
|
if (shader.Stage == ShaderStage.Fragment)
|
|
|
{
|
|
|
- HasFragmentShader = true;
|
|
|
+ hasFragmentShader = true;
|
|
|
}
|
|
|
|
|
|
int shaderHandle = GL.CreateShader(shader.Stage.Convert());
|
|
|
@@ -71,7 +71,7 @@ namespace Ryujinx.Graphics.OpenGL
|
|
|
|
|
|
GL.LinkProgram(Handle);
|
|
|
|
|
|
- FragmentOutputMap = fragmentOutputMap;
|
|
|
+ FragmentOutputMap = hasFragmentShader ? fragmentOutputMap : 0;
|
|
|
}
|
|
|
|
|
|
public Program(ReadOnlySpan<byte> code, bool hasFragmentShader, int fragmentOutputMap)
|
|
|
@@ -91,8 +91,7 @@ namespace Ryujinx.Graphics.OpenGL
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- HasFragmentShader = hasFragmentShader;
|
|
|
- FragmentOutputMap = fragmentOutputMap;
|
|
|
+ FragmentOutputMap = hasFragmentShader ? fragmentOutputMap : 0;
|
|
|
}
|
|
|
|
|
|
public void Bind()
|