Sort syncshells by VRAM usage

This commit is contained in:
2025-09-03 12:53:21 +01:00
parent f7ecb45774
commit 11e097d696
7 changed files with 67 additions and 35 deletions

View File

@@ -7,6 +7,7 @@ namespace MareSynchronos.MareConfiguration.Configurations;
[Serializable] [Serializable]
public class MareConfig : IMareConfiguration public class MareConfig : IMareConfiguration
{ {
public bool SortSyncshellsByVRAM { get; set; } = false;
public int ExpectedTOSVersion = 2; public int ExpectedTOSVersion = 2;
public int AcceptedTOSVersion { get; set; } = 0; public int AcceptedTOSVersion { get; set; } = 0;
public bool AcceptedAgreement { get; set; } = false; public bool AcceptedAgreement { get; set; } = false;

View File

@@ -14,10 +14,12 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Chaos.NaCl.Standard" Version="1.0.0" /> <PackageReference Include="Chaos.NaCl.Standard" Version="1.0.0" />
<PackageReference Include="Downloader" Version="3.3.4" /> <PackageReference Include="Downloader" Version="4.0.3" />
<PackageReference Include="K4os.Compression.LZ4.Legacy" Version="1.3.8" /> <PackageReference Include="K4os.Compression.LZ4.Legacy" Version="1.3.8" />
<PackageReference Include="K4os.Compression.LZ4.Streams" Version="1.3.8" /> <PackageReference Include="K4os.Compression.LZ4.Streams" Version="1.3.8" />
<PackageReference Include="Meziantou.Analyzer" Version="2.0.212"> <PackageReference Include="MessagePack" Version="3.1.4" />
<PackageReference Include="MessagePack.Annotations" Version="3.1.4" />
<PackageReference Include="Meziantou.Analyzer" Version="2.0.213">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
@@ -29,6 +31,8 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.14.0" /> <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.14.0" />
<PackageReference Update="DalamudPackager" Version="13.1.0" />
<PackageReference Include="System.IO.Pipelines" Version="9.0.8" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition="Exists('.\Penumbra.Api\Penumbra.Api.csproj')"> <ItemGroup Condition="Exists('.\Penumbra.Api\Penumbra.Api.csproj')">

View File

@@ -9,6 +9,6 @@
"customization" "customization"
], ],
"IconUrl": "https://raw.githubusercontent.com/Eauldane/SnowcloakClient/refs/heads/main/MareSynchronos/images/logo.png", "IconUrl": "https://raw.githubusercontent.com/Eauldane/SnowcloakClient/refs/heads/main/MareSynchronos/images/logo.png",
"RepoUrl": "https://github.com/Eauldane/SnowcloakClient", "RepoUrl": "https://git.snowcloak-sync.com/Eauldane/SnowcloakClient",
"CanUnloadAsync": true "CanUnloadAsync": true
} }

View File

@@ -20,6 +20,7 @@ public class DrawGroupPair : DrawPairBase
private readonly GroupPairFullInfoDto _fullInfoDto; private readonly GroupPairFullInfoDto _fullInfoDto;
private readonly GroupFullInfoDto _group; private readonly GroupFullInfoDto _group;
private readonly CharaDataManager _charaDataManager; private readonly CharaDataManager _charaDataManager;
public long _VRAMBytes;
public DrawGroupPair(string id, Pair entry, ApiController apiController, public DrawGroupPair(string id, Pair entry, ApiController apiController,
MareMediator mareMediator, GroupFullInfoDto group, GroupPairFullInfoDto fullInfoDto, MareMediator mareMediator, GroupFullInfoDto group, GroupPairFullInfoDto fullInfoDto,
@@ -80,11 +81,13 @@ public class DrawGroupPair : DrawPairBase
} }
if (_pair.LastAppliedDataBytes >= 0) if (_pair.LastAppliedDataBytes >= 0)
{ {
presenceText += UiSharedService.TooltipSeparator; presenceText += UiSharedService.TooltipSeparator;
presenceText += ((!_pair.IsVisible) ? "(Last) " : string.Empty) + "Mods Info" + Environment.NewLine; presenceText += ((!_pair.IsVisible) ? "(Last) " : string.Empty) + "Mods Info" + Environment.NewLine;
presenceText += "Files Size: " + UiSharedService.ByteToString(_pair.LastAppliedDataBytes, true); presenceText += "Files Size: " + UiSharedService.ByteToString(_pair.LastAppliedDataBytes, true);
if (_pair.LastAppliedApproximateVRAMBytes >= 0) if (_pair.LastAppliedApproximateVRAMBytes >= 0)
{ {
_VRAMBytes = _pair.LastAppliedApproximateVRAMBytes;
presenceText += Environment.NewLine + "Approx. VRAM Usage: " + UiSharedService.ByteToString(_pair.LastAppliedApproximateVRAMBytes, true); presenceText += Environment.NewLine + "Approx. VRAM Usage: " + UiSharedService.ByteToString(_pair.LastAppliedApproximateVRAMBytes, true);
} }
if (_pair.LastAppliedDataTris >= 0) if (_pair.LastAppliedDataTris >= 0)

View File

@@ -452,7 +452,16 @@ internal sealed class GroupPanel
{ {
ImGui.TextUnformatted("Visible"); ImGui.TextUnformatted("Visible");
ImGui.Separator(); ImGui.Separator();
if (_mareConfig.Current.SortSyncshellsByVRAM)
{
List<DrawGroupPair> sortedVisibleUsers = visibleUsers.OrderBy(o=>o._VRAMBytes).ToList();
_uidDisplayHandler.RenderPairList(sortedVisibleUsers);
}
else
{
_uidDisplayHandler.RenderPairList(visibleUsers); _uidDisplayHandler.RenderPairList(visibleUsers);
}
} }
if (onlineUsers.Count > 0) if (onlineUsers.Count > 0)

View File

@@ -956,6 +956,7 @@ public class SettingsUi : WindowMediatorSubscriberBase
_uiShared.BigText("UI"); _uiShared.BigText("UI");
var showCharacterNames = _configService.Current.ShowCharacterNames; var showCharacterNames = _configService.Current.ShowCharacterNames;
var showVisibleSeparate = _configService.Current.ShowVisibleUsersSeparately; var showVisibleSeparate = _configService.Current.ShowVisibleUsersSeparately;
var sortSyncshellByVRAM = _configService.Current.SortSyncshellsByVRAM;
var showOfflineSeparate = _configService.Current.ShowOfflineUsersSeparately; var showOfflineSeparate = _configService.Current.ShowOfflineUsersSeparately;
var showProfiles = _configService.Current.ProfilesShow; var showProfiles = _configService.Current.ProfilesShow;
var showNsfwProfiles = _configService.Current.ProfilesAllowNsfw; var showNsfwProfiles = _configService.Current.ProfilesAllowNsfw;
@@ -1074,7 +1075,12 @@ public class SettingsUi : WindowMediatorSubscriberBase
_configService.Save(); _configService.Save();
} }
_uiShared.DrawHelpText("This will show all currently visible users in a special 'Visible' group in the main UI."); _uiShared.DrawHelpText("This will show all currently visible users in a special 'Visible' group in the main UI.");
if (ImGui.Checkbox("Sort visible syncshell users by VRAM usage", ref sortSyncshellByVRAM))
{
_configService.Current.SortSyncshellsByVRAM = sortSyncshellByVRAM;
_configService.Save();
}
_uiShared.DrawHelpText("This will put users using the most VRAM in a syncshell at the top of the list.");
if (ImGui.Checkbox("Show separate Offline group", ref showOfflineSeparate)) if (ImGui.Checkbox("Show separate Offline group", ref showOfflineSeparate))
{ {
_configService.Current.ShowOfflineUsersSeparately = showOfflineSeparate; _configService.Current.ShowOfflineUsersSeparately = showOfflineSeparate;

View File

@@ -10,9 +10,9 @@
}, },
"DalamudPackager": { "DalamudPackager": {
"type": "Direct", "type": "Direct",
"requested": "[13.0.0, )", "requested": "[13.1.0, )",
"resolved": "13.0.0", "resolved": "13.1.0",
"contentHash": "Mb3cUDSK/vDPQ8gQIeuCw03EMYrej1B4J44a1AvIJ9C759p9XeqdU9Hg4WgOmlnlPe0G7ILTD32PKSUpkQNa8w==" "contentHash": "XdoNhJGyFby5M/sdcRhnc5xTop9PHy+H50PTWpzLhJugjB19EDBiHD/AsiDF66RETM+0qKUdJBZrNuebn7qswQ=="
}, },
"DotNet.ReproducibleBuilds": { "DotNet.ReproducibleBuilds": {
"type": "Direct", "type": "Direct",
@@ -22,11 +22,11 @@
}, },
"Downloader": { "Downloader": {
"type": "Direct", "type": "Direct",
"requested": "[3.3.4, )", "requested": "[4.0.3, )",
"resolved": "3.3.4", "resolved": "4.0.3",
"contentHash": "/M/c80e1L0WW1XrLSSiQhgFxk8rrfbpWiWDn2CeBg1tPD393Neo+v184yG/ThyhE9rrNp36yCrugiCmEbRf+VQ==", "contentHash": "Vg1+UqPDstpMw2CKXV9XvB8jKHC95KQfbqPxQXvOMRMFnTov4Ixvvw6GZV5DXLnKuL2sfnmVYX9CaQtcURia1Q==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "8.0.1" "Microsoft.Extensions.Logging.Abstractions": "8.0.3"
} }
}, },
"Glamourer.Api": { "Glamourer.Api": {
@@ -55,11 +55,28 @@
"System.IO.Pipelines": "6.0.3" "System.IO.Pipelines": "6.0.3"
} }
}, },
"MessagePack": {
"type": "Direct",
"requested": "[3.1.4, )",
"resolved": "3.1.4",
"contentHash": "BH0wlHWmVoZpbAPyyt2Awbq30C+ZsS3eHSkYdnyUAbqVJ22fAJDzn2xTieBeoT5QlcBzp61vHcv878YJGfi3mg==",
"dependencies": {
"MessagePack.Annotations": "3.1.4",
"MessagePackAnalyzer": "3.1.4",
"Microsoft.NET.StringTools": "17.11.4"
}
},
"MessagePack.Annotations": {
"type": "Direct",
"requested": "[3.1.4, )",
"resolved": "3.1.4",
"contentHash": "aVWrDAkCdqxwQsz/q0ldPh2EFn48M99YUzE9OvZjMq2RNLKz4o2z88iGFvSvbMqOWRweRvKPHBJZe22PRqzslQ=="
},
"Meziantou.Analyzer": { "Meziantou.Analyzer": {
"type": "Direct", "type": "Direct",
"requested": "[2.0.212, )", "requested": "[2.0.213, )",
"resolved": "2.0.212", "resolved": "2.0.213",
"contentHash": "U91ktjjTRTccUs3Lk+hrLD9vW+2+lhnsOf4G1GpRSJi1pLn3uK5CU6wGP9Bmz1KlJs6Oz1GGoMhxQBoqQsmAuQ==" "contentHash": "LHnFGBqhlBjbf8Uo4OIzGM0llRxFrIMuo/hP9oHq+aldS+28G4LqG12LK0co9b+S0yj1Vbf0rclDHN0Ji2DTkA=="
}, },
"Microsoft.AspNetCore.SignalR.Client": { "Microsoft.AspNetCore.SignalR.Client": {
"type": "Direct", "type": "Direct",
@@ -133,6 +150,12 @@
"Microsoft.IdentityModel.Tokens": "8.14.0" "Microsoft.IdentityModel.Tokens": "8.14.0"
} }
}, },
"System.IO.Pipelines": {
"type": "Direct",
"requested": "[9.0.8, )",
"resolved": "9.0.8",
"contentHash": "6vPmJt73mgUo1gzc/OcXlJvClz/2jxZ4TQPRfriVaLoGRH2mye530D9WHJYbFQRNMxF3PWCoeofsFdCyN7fLzA=="
},
"K4os.Compression.LZ4": { "K4os.Compression.LZ4": {
"type": "Transitive", "type": "Transitive",
"resolved": "1.3.8", "resolved": "1.3.8",
@@ -143,19 +166,10 @@
"resolved": "1.0.8", "resolved": "1.0.8",
"contentHash": "Wp2F7BamQ2Q/7Hk834nV9vRQapgcr8kgv9Jvfm8J3D0IhDqZMMl+a2yxUq5ltJitvXvQfB8W6K4F4fCbw/P6YQ==" "contentHash": "Wp2F7BamQ2Q/7Hk834nV9vRQapgcr8kgv9Jvfm8J3D0IhDqZMMl+a2yxUq5ltJitvXvQfB8W6K4F4fCbw/P6YQ=="
}, },
"MessagePack": { "MessagePackAnalyzer": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.5.187", "resolved": "3.1.4",
"contentHash": "uW4j8m4Nc+2Mk5n6arOChavJ9bLjkis0qWASOj2h2OwmfINuzYv+mjCHUymrYhmyyKTu3N+ObtTXAY4uQ7jIhg==", "contentHash": "CTaSsN/liJ7MhLCAB7Z4ZLBNuVGCq9lt2BT/cbrc9vzGv89yK3CqIA+z9T19a11eQYl9etZHL6MQJgCqECRVpg=="
"dependencies": {
"MessagePack.Annotations": "2.5.187",
"Microsoft.NET.StringTools": "17.6.3"
}
},
"MessagePack.Annotations": {
"type": "Transitive",
"resolved": "2.5.198",
"contentHash": "3U9OvqQGTra+Mz1k1zfNAScSdNHobnqtQ51qdMGUZppkNDZJl0X/igq6Qz5zDBLEZoYqZrFtZwFx6wBJHHI8BA=="
}, },
"Microsoft.AspNetCore.Connections.Abstractions": { "Microsoft.AspNetCore.Connections.Abstractions": {
"type": "Transitive", "type": "Transitive",
@@ -499,19 +513,14 @@
}, },
"Microsoft.NET.StringTools": { "Microsoft.NET.StringTools": {
"type": "Transitive", "type": "Transitive",
"resolved": "17.6.3", "resolved": "17.11.4",
"contentHash": "N0ZIanl1QCgvUumEL1laasU0a7sOE5ZwLZVTn0pAePnfhq8P7SvTjF8Axq+CnavuQkmdQpGNXQ1efZtu5kDFbA==" "contentHash": "mudqUHhNpeqIdJoUx2YDWZO/I9uEDYVowan89R6wsomfnUJQk6HteoQTlNjZDixhT2B4IXMkMtgZtoceIjLRmA=="
}, },
"System.Diagnostics.EventLog": { "System.Diagnostics.EventLog": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.8", "resolved": "9.0.8",
"contentHash": "gebRF3JLLJ76jz1CQpvwezNapZUjFq20JQsaGHzBH0DzlkHBLpdhwkOei9usiOkIGMwU/L0ALWpNe1JE+5/itw==" "contentHash": "gebRF3JLLJ76jz1CQpvwezNapZUjFq20JQsaGHzBH0DzlkHBLpdhwkOei9usiOkIGMwU/L0ALWpNe1JE+5/itw=="
}, },
"System.IO.Pipelines": {
"type": "Transitive",
"resolved": "6.0.3",
"contentHash": "ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw=="
},
"System.Net.ServerSentEvents": { "System.Net.ServerSentEvents": {
"type": "Transitive", "type": "Transitive",
"resolved": "9.0.8", "resolved": "9.0.8",
@@ -525,7 +534,7 @@
"maresynchronos.api": { "maresynchronos.api": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"MessagePack.Annotations": "[2.5.198, )" "MessagePack.Annotations": "[3.1.4, )"
} }
} }
} }