Compare commits

...

8 commits

Author SHA1 Message Date
GreemDev
96ed38a9ea Merge branch 'master' into removal/ims 2025-03-24 18:13:31 -05:00
GreemDev
d7754aeee1 Merge branch 'patch-2' into 'master'
Very small fix for Swedish in locales.json to render the Settings tab line better

See merge request ryubing/ryujinx!12
2025-03-23 18:57:31 +00:00
Yeager
4ef2836df1 Very small fix for Swedish in locales.json to render the Settings tab line better 2025-03-23 17:41:58 +00:00
GreemDev
e7d3f39c1b HLE: Damnit Greem, those were supposed to be debug.
OOPSIE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2025-03-23 04:16:23 -05:00
GreemDev
2f064064ca HLE: Slightly speed up IpcService creation
This is not a crazy speedup, we're talking fractions of a millisecond here (I had to measure in ticks; 10000000 ticks per second)

- TIPC commands are opted-into for registration since they are only used for IUserInterface, but were still attempted to be initialized for every service which spent needless time.

- Directly use GetType() instead of accessing all exported types, and Where()ing for equivalency to GetType(). This causes the logic for registration to be a lot faster.
2025-03-23 04:14:31 -05:00
GreemDev
86c2f261af Graphics: Save shaders to a lowercase title ID folder.
I think this got reverted in the metal revert commit.
2025-03-22 22:39:03 -05:00
GreemDev
4ced04948a ryubing/ryujinx!11 2025-03-21 06:26:42 +00:00
Yeager
02d459a9bd Swedish translations for new strings 2025-03-21 06:26:42 +00:00
4 changed files with 44 additions and 21 deletions

View file

@ -117,7 +117,7 @@ namespace Ryujinx.Graphics.Gpu.Shader
private static string GetDiskCachePath()
{
return GraphicsConfig.EnableShaderCache && GraphicsConfig.TitleId != null
? Path.Combine(AppDataManager.GamesDirPath, GraphicsConfig.TitleId, "cache", "shader")
? Path.Combine(AppDataManager.GamesDirPath, GraphicsConfig.TitleId.ToLower(), "cache", "shader")
: null;
}

View file

@ -1,8 +1,10 @@
using Gommon;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.Exceptions;
using Ryujinx.HLE.HOS.Ipc;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
@ -21,22 +23,43 @@ namespace Ryujinx.HLE.HOS.Services
private int _selfId;
private bool _isDomain;
public IpcService(ServerBase server = null)
public IpcService(ServerBase server = null, bool registerTipc = false)
{
CmifCommands = GetType().Assembly.GetTypes()
.Where(type => type == GetType())
.SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public))
Stopwatch sw = Stopwatch.StartNew();
CmifCommands = GetType()
.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public)
.SelectMany(methodInfo => methodInfo.GetCustomAttributes<CommandCmifAttribute>()
.Select(command => (command.Id, methodInfo)))
.ToDictionary(command => command.Id, command => command.methodInfo);
sw.Stop();
Logger.Debug?.Print(
LogClass.Emulation,
$"{CmifCommands.Count} Cmif commands loaded in {sw.ElapsedTicks} ticks ({Stopwatch.Frequency} tps).",
GetType().AsPrettyString()
);
TipcCommands = GetType().Assembly.GetTypes()
.Where(type => type == GetType())
.SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public))
.SelectMany(methodInfo => methodInfo.GetCustomAttributes<CommandTipcAttribute>()
.Select(command => (command.Id, methodInfo)))
.ToDictionary(command => command.Id, command => command.methodInfo);
if (registerTipc)
{
sw.Start();
TipcCommands = GetType()
.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public)
.SelectMany(methodInfo => methodInfo.GetCustomAttributes<CommandTipcAttribute>()
.Select(command => (command.Id, methodInfo)))
.ToDictionary(command => command.Id, command => command.methodInfo);
sw.Stop();
Logger.Debug?.Print(
LogClass.Emulation,
$"{TipcCommands.Count} Tipc commands loaded in {sw.ElapsedTicks} ticks ({Stopwatch.Frequency} tps).",
GetType().AsPrettyString()
);
}
Server = server;
_parent = this;

View file

@ -21,7 +21,7 @@ namespace Ryujinx.HLE.HOS.Services.Sm
private bool _isInitialized;
public IUserInterface(KernelContext context, SmRegistry registry)
public IUserInterface(KernelContext context, SmRegistry registry) : base(registerTipc: true)
{
_commonServer = new ServerBase(context, "CommonServer");
_registry = registry;

View file

@ -2764,7 +2764,7 @@
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Задать индивидуальные параметры",
"sv_SE": "",
"sv_SE": "Skapa anpassad konfiguration",
"th_TH": "",
"tr_TR": "",
"uk_UA": "Створити користувацьку конфігурацію",
@ -2789,7 +2789,7 @@
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Изменить индивидуальные параметры",
"sv_SE": "",
"sv_SE": "Redigera anpassad konfiguration",
"th_TH": "",
"tr_TR": "",
"uk_UA": "Редагувати користувацьку конфігурацію",
@ -2864,7 +2864,7 @@
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Отредактировать существующие независимые параметры для выбранной игры.",
"sv_SE": "",
"sv_SE": "Redigera din befintliga oberoende konfiguration för det valda spelet",
"th_TH": "",
"tr_TR": "",
"uk_UA": "Відредагувати наявну індивідуальну конфігурацію для цієї гри.",
@ -3839,7 +3839,7 @@
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Включить оригинальный интерфейса (требуется перезагрузка)",
"sv_SE": "",
"sv_SE": "Visa ursprunglig gränssnittsstil (kräver omstart)",
"th_TH": "",
"tr_TR": "",
"uk_UA": "Показати оригінальний UI (Потрібен перезапуск)",
@ -3864,7 +3864,7 @@
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Показать старый пользовательский интерфейс Avalonia Ryujinx, напоминающий Ryujinx 1.1.1403. Включено по умолчанию на платформах, отличных от Windows.\nСтрока заголовка в классическом стиле вернётся на место, а основные изменения в оформлении окна будут отменены; например, расположение навигации по настройкам над этой всплывающей подсказкой.",
"sv_SE": "",
"sv_SE": "Visa det gamla Ryuijinx-gränssnittet baserat på Avalonia som påminner om version 1.1.1403. Detta är aktiverat som standard på plattformat som inte är Windows.\nDen klassiska titelfältet är tillbaka och de stora omarbetningarna av fönsterlayouten är omvända, till exempel placeringen av inställningsnavigeringen ovanför detta verktygstips.",
"th_TH": "",
"tr_TR": "",
"uk_UA": "Показати старий інтерфейс Avalonia Ryujinx, який був у Ryujinx 1.1.1403. Ця опція активна за замовчуванням на всіх інших, окрім Windows платформах.\nПовернеться класична панель заголовка, а всі суттєві зміни інтерфейсу будуть скасовані, зокрема горизонтальне розміщення навігації в налаштуваннях.",
@ -19714,7 +19714,7 @@
"pl_PL": "Skróty Klawiszowe Klawiatury",
"pt_BR": "Atalhos do Teclado",
"ru_RU": "Горячие клавиши",
"sv_SE": "Snabbtangenter för tangentbord",
"sv_SE": "Snabbtangenter",
"th_TH": "ปุ่มลัดของคีย์บอร์ด",
"tr_TR": "Klavye Kısayolları",
"uk_UA": "Гарячі клавіші клавіатури",
@ -23814,7 +23814,7 @@
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Список совместимости — записей: {0}",
"sv_SE": "",
"sv_SE": "Kompatibilitetslista - {0} poster",
"th_TH": "",
"tr_TR": "",
"uk_UA": "Список сумісності — {0} ігор",
@ -23889,7 +23889,7 @@
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Поиск среди {0} записей о совместимости...",
"sv_SE": "",
"sv_SE": "Sök i {0} kompatibilitetsposter...",
"th_TH": "",
"tr_TR": "",
"uk_UA": "Шукати серед {0} перевірених ігор...",
@ -24214,7 +24214,7 @@
"pl_PL": "",
"pt_BR": "",
"ru_RU": "Индивидуальные параметры",
"sv_SE": "",
"sv_SE": "Anpassad konfiguration",
"th_TH": "",
"tr_TR": "",
"uk_UA": "Власна конфігурація",