mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-04-21 18:13:14 +02:00
Compare commits
6 commits
07e53e1e3f
...
0af62c0cda
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0af62c0cda | ||
![]() |
7c89e87deb | ||
![]() |
abe95caee7 | ||
![]() |
8d50681112 | ||
![]() |
b63af3545c | ||
![]() |
3942cda3de |
3 changed files with 22 additions and 10 deletions
|
@ -19914,7 +19914,7 @@
|
||||||
"pl_PL": "Skróty Klawiszowe Klawiatury",
|
"pl_PL": "Skróty Klawiszowe Klawiatury",
|
||||||
"pt_BR": "Atalhos do Teclado",
|
"pt_BR": "Atalhos do Teclado",
|
||||||
"ru_RU": "Горячие клавиши",
|
"ru_RU": "Горячие клавиши",
|
||||||
"sv_SE": "Snabbtangenter för tangentbord",
|
"sv_SE": "Snabbtangenter",
|
||||||
"th_TH": "ปุ่มลัดของคีย์บอร์ด",
|
"th_TH": "ปุ่มลัดของคีย์บอร์ด",
|
||||||
"tr_TR": "Klavye Kısayolları",
|
"tr_TR": "Klavye Kısayolları",
|
||||||
"uk_UA": "Гарячі клавіші",
|
"uk_UA": "Гарячі клавіші",
|
||||||
|
|
|
@ -512,13 +512,9 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
|
||||||
if (context.Definitions.Stage == ShaderStage.Fragment && context.Definitions.DualSourceBlend)
|
if (context.Definitions.Stage == ShaderStage.Fragment && context.Definitions.DualSourceBlend)
|
||||||
{
|
{
|
||||||
IoDefinition firstOutput = outputs.ElementAtOrDefault(0);
|
IoDefinition firstOutput = outputs.ElementAtOrDefault(0);
|
||||||
IoDefinition secondOutput = outputs.ElementAtOrDefault(1);
|
|
||||||
|
|
||||||
if (firstOutput.Location + 1 == secondOutput.Location)
|
DeclareOutputDualSourceBlendAttribute(context, firstOutput.Location);
|
||||||
{
|
outputs = outputs.Skip(2);
|
||||||
DeclareOutputDualSourceBlendAttribute(context, firstOutput.Location);
|
|
||||||
outputs = outputs.Skip(2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (IoDefinition ioDefinition in outputs)
|
foreach (IoDefinition ioDefinition in outputs)
|
||||||
|
|
|
@ -181,13 +181,29 @@ 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (stage == ShaderStage.Vertex)
|
if (stage == ShaderStage.Vertex)
|
||||||
{
|
{
|
||||||
InitializeVertexOutputs(context);
|
InitializeVertexOutputs(context);
|
||||||
|
|
Loading…
Add table
Reference in a new issue