Make sure attributes used on subsequent shader stages are initialized (#2538)
This commit is contained in:
@ -277,21 +277,11 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
|
||||
|
||||
public AstOperand GetOperandDef(Operand operand)
|
||||
{
|
||||
if (TryGetUserAttributeIndex(operand, out int attrIndex))
|
||||
{
|
||||
Info.OAttributes.Add(attrIndex);
|
||||
}
|
||||
|
||||
return GetOperand(operand);
|
||||
}
|
||||
|
||||
public AstOperand GetOperandUse(Operand operand)
|
||||
{
|
||||
if (TryGetUserAttributeIndex(operand, out int attrIndex))
|
||||
{
|
||||
Info.IAttributes.Add(attrIndex);
|
||||
}
|
||||
|
||||
return GetOperand(operand);
|
||||
}
|
||||
|
||||
@ -318,30 +308,5 @@ namespace Ryujinx.Graphics.Shader.StructuredIr
|
||||
|
||||
return astOperand;
|
||||
}
|
||||
|
||||
private static bool TryGetUserAttributeIndex(Operand operand, out int attrIndex)
|
||||
{
|
||||
if (operand.Type == OperandType.Attribute)
|
||||
{
|
||||
if (operand.Value >= AttributeConsts.UserAttributeBase &&
|
||||
operand.Value < AttributeConsts.UserAttributeEnd)
|
||||
{
|
||||
attrIndex = (operand.Value - AttributeConsts.UserAttributeBase) >> 4;
|
||||
|
||||
return true;
|
||||
}
|
||||
else if (operand.Value >= AttributeConsts.FragmentOutputColorBase &&
|
||||
operand.Value < AttributeConsts.FragmentOutputColorEnd)
|
||||
{
|
||||
attrIndex = (operand.Value - AttributeConsts.FragmentOutputColorBase) >> 4;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
attrIndex = 0;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user