Use vector transform feedback outputs with fragment shaders (#4708)
* Use vector transform feedback outputs with fragment shaders * Shader cache version bump * Fix missing outputs when vector transform feedback outputs are used
This commit is contained in:
parent
3f98369a17
commit
4dd77316f7
9 changed files with 38 additions and 33 deletions
|
@ -17,7 +17,6 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|||
public ShaderStage Stage { get; }
|
||||
|
||||
public bool GpPassthrough { get; }
|
||||
public bool LastInPipeline { get; private set; }
|
||||
public bool LastInVertexPipeline { get; private set; }
|
||||
|
||||
public bool HasLayerInputAttribute { get; private set; }
|
||||
|
@ -145,7 +144,6 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|||
OmapSampleMask = header.OmapSampleMask;
|
||||
OmapDepth = header.OmapDepth;
|
||||
TransformFeedbackEnabled = gpuAccessor.QueryTransformFeedbackEnabled();
|
||||
LastInPipeline = true;
|
||||
LastInVertexPipeline = header.Stage < ShaderStage.Fragment;
|
||||
}
|
||||
|
||||
|
@ -253,13 +251,8 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|||
GpLayerInputAttribute = attr;
|
||||
}
|
||||
|
||||
public void SetLastInVertexPipeline(bool hasFragment)
|
||||
public void SetLastInVertexPipeline()
|
||||
{
|
||||
if (!hasFragment)
|
||||
{
|
||||
LastInPipeline = true;
|
||||
}
|
||||
|
||||
LastInVertexPipeline = true;
|
||||
}
|
||||
|
||||
|
@ -331,8 +324,6 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|||
config._perPatchAttributeLocations = locationsMap;
|
||||
}
|
||||
|
||||
LastInPipeline = false;
|
||||
|
||||
// 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,
|
||||
// so the stage that comes before it is the last one that can do modifications.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue