|
@@ -17,7 +17,6 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|
|
public ShaderStage Stage { get; }
|
|
public ShaderStage Stage { get; }
|
|
|
|
|
|
|
|
public bool GpPassthrough { get; }
|
|
public bool GpPassthrough { get; }
|
|
|
- public bool LastInPipeline { get; private set; }
|
|
|
|
|
public bool LastInVertexPipeline { get; private set; }
|
|
public bool LastInVertexPipeline { get; private set; }
|
|
|
|
|
|
|
|
public bool HasLayerInputAttribute { get; private set; }
|
|
public bool HasLayerInputAttribute { get; private set; }
|
|
@@ -145,7 +144,6 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|
|
OmapSampleMask = header.OmapSampleMask;
|
|
OmapSampleMask = header.OmapSampleMask;
|
|
|
OmapDepth = header.OmapDepth;
|
|
OmapDepth = header.OmapDepth;
|
|
|
TransformFeedbackEnabled = gpuAccessor.QueryTransformFeedbackEnabled();
|
|
TransformFeedbackEnabled = gpuAccessor.QueryTransformFeedbackEnabled();
|
|
|
- LastInPipeline = true;
|
|
|
|
|
LastInVertexPipeline = header.Stage < ShaderStage.Fragment;
|
|
LastInVertexPipeline = header.Stage < ShaderStage.Fragment;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -253,13 +251,8 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|
|
GpLayerInputAttribute = attr;
|
|
GpLayerInputAttribute = attr;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public void SetLastInVertexPipeline(bool hasFragment)
|
|
|
|
|
|
|
+ public void SetLastInVertexPipeline()
|
|
|
{
|
|
{
|
|
|
- if (!hasFragment)
|
|
|
|
|
- {
|
|
|
|
|
- LastInPipeline = true;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
LastInVertexPipeline = true;
|
|
LastInVertexPipeline = true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -331,8 +324,6 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|
|
config._perPatchAttributeLocations = locationsMap;
|
|
config._perPatchAttributeLocations = locationsMap;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- LastInPipeline = false;
|
|
|
|
|
-
|
|
|
|
|
// We don't consider geometry shaders using the geometry shader passthrough feature
|
|
// We don't consider geometry shaders using the geometry shader passthrough feature
|
|
|
// as being the last because when this feature is used, it can't actually modify any of the outputs,
|
|
// as being the last because when this feature is used, it can't actually modify any of the outputs,
|
|
|
// so the stage that comes before it is the last one that can do modifications.
|
|
// so the stage that comes before it is the last one that can do modifications.
|