mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-07-06 18:26:26 +02:00
Revert the Metal Experiment (#701)
Metal sounded like a good idea to get in the emulator but frankly I underestimated just how experimental and not ready it was. From my write up in the Discord: ``` As is, Metal supports only a few games. The games it does support freeze on first use of not playing them via Vulkan, because shader translation is broken. So you need to use a dirty hack to not delete all your shaders. Not to mention it breaks many games via MoltenVK because of changes to the shared GPU code. Merging Metal seemed like a great idea, because of the few games it does support. But I don't think it's worth it. Many of the games it breaks via MoltenVK *don't work via Metal*. Which effectively makes current Ryubing worse for Mac users than Ryujinx 1.1.1403. I think what I'm gonna do is revert Metal, and reopen it as a PR. That way, you can still take advantage of the Metal backend as is, but without making other games worse with no solution. ``` For what it's worth, the shader translation part could at least be "fixed" by always applying a 30ms delay for shader translation to Metal. That being said, that solution sucks ass. The MoltenVK regressions are even worse. I hope this is not a let down to the Mac users. I hope you realize I'm reverting this because you're actively getting a worse experience with it in the emulator.
This commit is contained in:
parent
eb6b0e9adc
commit
fe1617ffea
135 changed files with 302 additions and 15077 deletions
|
@ -141,7 +141,8 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||
// For an example of this, download canary 1.2.95, then open the settings menu, and look at the icon in the top-left.
|
||||
// The border gets reduced to colored pixels in the 4 corners.
|
||||
public static readonly Bitmap IconBitmap =
|
||||
new(Assembly.GetAssembly(typeof(MainWindowViewModel))!.GetManifestResourceStream("Ryujinx.Assets.UIImages.Logo_Ryujinx_AntiAlias.png")!);
|
||||
new(Assembly.GetAssembly(typeof(MainWindowViewModel))!
|
||||
.GetManifestResourceStream("Ryujinx.Assets.UIImages.Logo_Ryujinx_AntiAlias.png")!);
|
||||
|
||||
public MainWindow Window { get; init; }
|
||||
|
||||
|
@ -1574,7 +1575,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||
|
||||
PrepareLoadScreen();
|
||||
|
||||
RendererHostControl = new RendererHost(application.Id.ToString("X16"));
|
||||
RendererHostControl = new RendererHost();
|
||||
|
||||
AppHost = new AppHost(
|
||||
RendererHostControl,
|
||||
|
|
|
@ -16,21 +16,6 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||
}
|
||||
|
||||
[ObservableProperty] private bool _xc2MenuSoftlockFix = ConfigurationState.Instance.Hacks.Xc2MenuSoftlockFix;
|
||||
[ObservableProperty] private bool _shaderTranslationDelayEnabled = ConfigurationState.Instance.Hacks.EnableShaderTranslationDelay;
|
||||
private int _shaderTranslationSleepDelay = ConfigurationState.Instance.Hacks.ShaderTranslationDelay;
|
||||
|
||||
public string ShaderTranslationDelayValueText => $"{ShaderTranslationDelay}ms";
|
||||
|
||||
public int ShaderTranslationDelay
|
||||
{
|
||||
get => _shaderTranslationSleepDelay;
|
||||
set
|
||||
{
|
||||
_shaderTranslationSleepDelay = value;
|
||||
|
||||
OnPropertiesChanged(nameof(ShaderTranslationDelay), nameof(ShaderTranslationDelayValueText));
|
||||
}
|
||||
}
|
||||
|
||||
public static string Xc2MenuFixTooltip { get; } = Lambda.String(sb =>
|
||||
{
|
||||
|
@ -44,13 +29,5 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||
"there is a low chance that the game will softlock, " +
|
||||
"the submenu won't show up, while background music is still there.");
|
||||
});
|
||||
|
||||
public static string ShaderTranslationDelayTooltip { get; } = Lambda.String(sb =>
|
||||
{
|
||||
sb.AppendLine("This hack applies the delay you specify every time shaders are attempted to be translated.")
|
||||
.AppendLine();
|
||||
|
||||
sb.Append("Configurable via slider, only when this option is enabled.");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -699,8 +699,6 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||
|
||||
// Dirty Hacks
|
||||
config.Hacks.Xc2MenuSoftlockFix.Value = DirtyHacks.Xc2MenuSoftlockFix;
|
||||
config.Hacks.EnableShaderTranslationDelay.Value = DirtyHacks.ShaderTranslationDelayEnabled;
|
||||
config.Hacks.ShaderTranslationDelay.Value = DirtyHacks.ShaderTranslationDelay;
|
||||
|
||||
config.ToFileFormat().SaveConfig(Program.ConfigurationPath);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue