Implement scaled vertex format emulation (#5564)

* Implement scaled vertex format emulation

* Auto-format (whitespace)

* Delete ToVec4Type
This commit is contained in:
gdkchan 2023-08-16 08:30:33 -03:00 committed by GitHub
parent 492a046335
commit effd546331
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 164 additions and 8 deletions

View file

@ -53,6 +53,8 @@ namespace Ryujinx.Graphics.Shader.Translation
public bool OmapSampleMask { get; }
public bool OmapDepth { get; }
public bool SupportsScaledVertexFormats { get; }
public bool TransformFeedbackEnabled { get; }
private readonly TransformFeedbackOutput[] _transformFeedbackOutputs;
@ -139,6 +141,7 @@ namespace Ryujinx.Graphics.Shader.Translation
int omapTargets,
bool omapSampleMask,
bool omapDepth,
bool supportsScaledVertexFormats,
bool transformFeedbackEnabled,
ulong transformFeedbackVecMap,
TransformFeedbackOutput[] transformFeedbackOutputs)
@ -154,6 +157,7 @@ namespace Ryujinx.Graphics.Shader.Translation
OmapSampleMask = omapSampleMask;
OmapDepth = omapDepth;
LastInVertexPipeline = stage < ShaderStage.Fragment;
SupportsScaledVertexFormats = supportsScaledVertexFormats;
TransformFeedbackEnabled = transformFeedbackEnabled;
_transformFeedbackOutputs = transformFeedbackOutputs;
_transformFeedbackDefinitions = new();
@ -302,7 +306,7 @@ namespace Ryujinx.Graphics.Shader.Translation
if (Stage == ShaderStage.Vertex && !isOutput)
{
type |= _graphicsState.AttributeTypes[location].ToAggregateType();
type |= _graphicsState.AttributeTypes[location].ToAggregateType(SupportsScaledVertexFormats);
}
else
{
@ -311,5 +315,10 @@ namespace Ryujinx.Graphics.Shader.Translation
return type;
}
public AttributeType GetAttributeType(int location)
{
return _graphicsState.AttributeTypes[location];
}
}
}

View file

@ -116,6 +116,7 @@ namespace Ryujinx.Graphics.Shader.Translation
header.OmapTargets,
header.OmapSampleMask,
header.OmapDepth,
gpuAccessor.QueryHostSupportsScaledVertexFormats(),
transformFeedbackEnabled,
transformFeedbackVecMap,
transformFeedbackOutputs);