Initial Changes

This commit is contained in:
Isaac Marovitz 2024-08-11 18:21:56 +01:00
parent 8d8983049e
commit 72616a3ea9
No known key found for this signature in database
GPG key ID: 97250B2B09A132E1

View file

@ -181,13 +181,31 @@ namespace Ryujinx.Graphics.Shader.Translation
private static void EmitOutputsInitialization(EmitterContext context, AttributeUsage attributeUsage, IGpuAccessor gpuAccessor, ShaderStage stage) private static void EmitOutputsInitialization(EmitterContext context, AttributeUsage attributeUsage, IGpuAccessor gpuAccessor, ShaderStage stage)
{ {
// Compute has no output attributes, and fragment is the last stage, so we // Compute has no output attributes, so we
// don't need to initialize outputs on those stages. // don't need to initialize outputs on that stage.
if (stage == ShaderStage.Compute || stage == ShaderStage.Fragment) if (stage == ShaderStage.Compute)
{ {
return; return;
} }
if (stage == ShaderStage.Fragment)
{
// Fragment is the last stage, so we don't need to
// initialize outputs unless we're using DSB, in which
// we need to make sure the ouput has a valid value.
if (gpuAccessor.QueryGraphicsState().DualSourceBlendEnable)
{
for (int i = 0; i < 4; i++)
{
context.Store(StorageKind.Output, IoVariable.FragmentOutputColor, null, Const(1), Const(i), ConstF(0));
}
}
else
{
return;
}
}
if (stage == ShaderStage.Vertex) if (stage == ShaderStage.Vertex)
{ {
InitializePositionOutput(context); InitializePositionOutput(context);