Compare commits

...

13 commits

Author SHA1 Message Date
Keaton
e9bc886f8e Merge branch 'feature/dsb-ub' into 'master'
Workaround undefined behavior in bad dual source blend states

See merge request ryubing/ryujinx!14
2025-03-27 23:29:48 +00:00
Isaac Marovitz
c1051a9d6a Return 2025-03-27 18:29:26 -05:00
Isaac Marovitz
27b042ca16 Always declare even in bad state on GLSL 2025-03-27 18:29:26 -05:00
Isaac Marovitz
27b5251bd3 Initial Changes 2025-03-27 18:29:26 -05:00
GreemDev
c9e120f8f2 Merge branch 'master' into 'master'
Updated Norwegian translation

See merge request ryubing/ryujinx!13
2025-03-27 23:09:01 +00:00
Daenorth
cb486ad66d Update file locales.json 2025-03-27 05:25:02 +00:00
Daenorth
463b5d403c Merge branch ryujinx:master into master 2025-03-25 10:55:17 +00:00
Daenorth
497627d09e Merge branch ryujinx:master into master 2025-03-21 11:24:30 +00:00
Daenorth
52fae771ad Merge branch ryujinx:master into master 2025-03-20 10:22:58 +00:00
Daenorth
c067f85fa3 Edit compatibility.csv 2025-03-20 06:13:27 +00:00
Daenorth
1a705418c5 Edit compatibility.csv 2025-03-20 05:57:17 +00:00
Daenorth
8ca06b69ac Update file TitleIDs.cs 2025-03-20 01:57:45 +00:00
Daenorth
8e666ab19f Update file compatibility.csv 2025-03-20 01:56:27 +00:00
3 changed files with 35 additions and 23 deletions

View file

@ -512,13 +512,9 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
if (context.Definitions.Stage == ShaderStage.Fragment && context.Definitions.DualSourceBlend)
{
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)

View file

@ -181,13 +181,29 @@ namespace Ryujinx.Graphics.Shader.Translation
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
// don't need to initialize outputs on those stages.
if (stage == ShaderStage.Compute || stage == ShaderStage.Fragment)
// Compute has no output attributes, so we
// don't need to initialize outputs on that stage.
if (stage == ShaderStage.Compute)
{
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)
{
InitializeVertexOutputs(context);

View file

@ -460,7 +460,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "스크린샷 폴더 열기",
"no_NO": "",
"no_NO": "Åpne Skjermbilde Mappen",
"pl_PL": "",
"pt_BR": "Abrir Pasta de Capturas de Tela",
"ru_RU": "Открыть папку со скриншотами",
@ -2760,7 +2760,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "사용자 정의 구성 만들기",
"no_NO": "",
"no_NO": "Opprett egendefinert konfigurasjon",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Задать индивидуальные параметры",
@ -2785,7 +2785,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "사용자 정의 구성 편집",
"no_NO": "",
"no_NO": "Rediger egendefinert konfigurasjon",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Изменить индивидуальные параметры",
@ -2860,7 +2860,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "선택한 게임에 대한 기존 독립 구성 편집",
"no_NO": "",
"no_NO": "Rediger din eksisterende uavhengige konfigurasjon for det valgte spillet",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Отредактировать существующие независимые параметры для выбранной игры.",
@ -4935,7 +4935,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "",
"no_NO": "Multiplikator i turbomodus:",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@ -4960,7 +4960,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "",
"no_NO": "Målverdien for multiplikatoren i turbomodus. \n\nLa syå på 200 hvis du er usikker.",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@ -4985,7 +4985,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "",
"no_NO": "Turbo-modus er en emulatorfunksjon som effektivt øker eller senker hastigheten når et spill ikke er følsom for bildefrekvens.\nDu kan slå på denne funksjonen i spillet med en hurtigtast, som kan konfigureres i Ryujinx Keyboard Hotkeys-innstillingene.\n\nLa den stå på 200 hvis du er usikker.",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@ -5360,7 +5360,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "컨트롤러 애플릿 무시",
"no_NO": "",
"no_NO": "Ignorer Kontroller-applet",
"pl_PL": "",
"pt_BR": "Ignorar Applet do Controlador",
"ru_RU": "Игнорировать апплет контроллера",
@ -16760,7 +16760,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "앱이 실행 중일 때, 게임패드의 연결이 끊어지면 컨트롤러 애플릿 대화 상자가 나타나지 않습니다.\n\n모르시면 끔으로 두십시오.",
"no_NO": "",
"no_NO": "Håndkontroller-appleten vises ikke hvis gamepaden kobles fra mens et program kjører.",
"pl_PL": "",
"pt_BR": "A caixa de diálogo do Applet do controlador não aparecerá se o controle for desconectado enquanto um aplicativo estiver em execução.\n\nDeixe a opção DESLIGADO se não tiver certeza.",
"ru_RU": "Диалоговое окно апплета контроллера не будет отображаться, если геймпад отключен во время работы приложения.\n\nОставьте выключенным, если не уверены.",
@ -17435,7 +17435,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "Ryujinx 스크린샷 폴더 열기",
"no_NO": "",
"no_NO": "Åpne Ryujinx skjermbildemappen",
"pl_PL": "",
"pt_BR": "Abre a pasta de capturas de tela do Ryujinx",
"ru_RU": "Открывает папку скриншотов Ryujinx",
@ -23985,7 +23985,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "",
"no_NO": "Hurtigtasten for turbo-modus.\nKonfigurer oppførselen til turbo-modus i Ryujinx CPU-innstillinger.\n\nLa være ubundet hvis du er usikker.",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@ -24010,7 +24010,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "",
"no_NO": "",
"no_NO": "Bare mens du trykker på",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "",
@ -24060,7 +24060,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "호환성 목록 - {0}개 항목",
"no_NO": "",
"no_NO": "Kompatibilitetsliste - {0} oppføringer",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Список совместимости — записей: {0}",
@ -24460,7 +24460,7 @@
"it_IT": "",
"ja_JP": "",
"ko_KR": "사용자 정의 설정",
"no_NO": "",
"no_NO": "Tilpasset konfigurasjon",
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Индивидуальные параметры",