aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Services/Vi
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Services/Vi')
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/IApplicationRootService.cs2
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/IManagerRootService.cs2
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/ISystemRootService.cs2
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/ResultCode.cs14
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/AndroidSurfaceComposerClient.cs4
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/IManagerDisplayService.cs12
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/ISystemDisplayService.cs6
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DestinationScalingMode.cs4
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DisplayInfo.cs12
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/SourceScalingMode.cs4
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/RootService/IApplicationDisplayService.cs75
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Vi/Types/ViServiceType.cs4
12 files changed, 76 insertions, 65 deletions
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/IApplicationRootService.cs b/src/Ryujinx.HLE/HOS/Services/Vi/IApplicationRootService.cs
index 526cecf8..9cc9d421 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/IApplicationRootService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/IApplicationRootService.cs
@@ -24,4 +24,4 @@ namespace Ryujinx.HLE.HOS.Services.Vi
return ResultCode.Success;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/IManagerRootService.cs b/src/Ryujinx.HLE/HOS/Services/Vi/IManagerRootService.cs
index d564dabe..dd4b25a0 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/IManagerRootService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/IManagerRootService.cs
@@ -25,4 +25,4 @@ namespace Ryujinx.HLE.HOS.Services.Vi
return ResultCode.Success;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/ISystemRootService.cs b/src/Ryujinx.HLE/HOS/Services/Vi/ISystemRootService.cs
index 0dfd84f5..b2415f2e 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/ISystemRootService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/ISystemRootService.cs
@@ -25,4 +25,4 @@ namespace Ryujinx.HLE.HOS.Services.Vi
return ResultCode.Success;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/ResultCode.cs b/src/Ryujinx.HLE/HOS/Services/Vi/ResultCode.cs
index c64339c9..3bed7e57 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/ResultCode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/ResultCode.cs
@@ -2,16 +2,16 @@ namespace Ryujinx.HLE.HOS.Services.Vi
{
enum ResultCode
{
- ModuleId = 114,
+ ModuleId = 114,
ErrorCodeShift = 9,
Success = 0,
- InvalidArguments = (1 << ErrorCodeShift) | ModuleId,
- InvalidLayerSize = (4 << ErrorCodeShift) | ModuleId,
- PermissionDenied = (5 << ErrorCodeShift) | ModuleId,
+ InvalidArguments = (1 << ErrorCodeShift) | ModuleId,
+ InvalidLayerSize = (4 << ErrorCodeShift) | ModuleId,
+ PermissionDenied = (5 << ErrorCodeShift) | ModuleId,
InvalidScalingMode = (6 << ErrorCodeShift) | ModuleId,
- InvalidValue = (7 << ErrorCodeShift) | ModuleId,
- AlreadyOpened = (9 << ErrorCodeShift) | ModuleId
+ InvalidValue = (7 << ErrorCodeShift) | ModuleId,
+ AlreadyOpened = (9 << ErrorCodeShift) | ModuleId,
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/AndroidSurfaceComposerClient.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/AndroidSurfaceComposerClient.cs
index 1fa99e65..782bb7d7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/AndroidSurfaceComposerClient.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/AndroidSurfaceComposerClient.cs
@@ -1,6 +1,6 @@
namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
{
- static class AndroidSurfaceComposerClient
+ class AndroidSurfaceComposerClient
{
// NOTE: This is android::SurfaceComposerClient::getDisplayInfo.
public static (ulong, ulong) GetDisplayInfo(ServiceCtx context, ulong displayId = 0)
@@ -16,4 +16,4 @@
}
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/IManagerDisplayService.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/IManagerDisplayService.cs
index 6093381c..3a08cdd7 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/IManagerDisplayService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/IManagerDisplayService.cs
@@ -4,7 +4,9 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
{
class IManagerDisplayService : IpcService
{
- private IApplicationDisplayService _applicationDisplayService;
+#pragma warning disable IDE0052 // Remove unread private member
+ private readonly IApplicationDisplayService _applicationDisplayService;
+#pragma warning restore IDE0052
public IManagerDisplayService(IApplicationDisplayService applicationDisplayService)
{
@@ -29,8 +31,10 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
// CreateManagedLayer(u32, u64, nn::applet::AppletResourceUserId) -> u64
public ResultCode CreateManagedLayer(ServiceCtx context)
{
- long layerFlags = context.RequestData.ReadInt64();
- long displayId = context.RequestData.ReadInt64();
+#pragma warning disable IDE0059 // Remove unnecessary value assignment
+ long layerFlags = context.RequestData.ReadInt64();
+ long displayId = context.RequestData.ReadInt64();
+#pragma warning restore IDE0059
long appletResourceUserId = context.RequestData.ReadInt64();
ulong pid = context.Device.System.AppletState.AppletResourceUserIds.GetData<ulong>((int)appletResourceUserId);
@@ -77,4 +81,4 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
return ResultCode.Success;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/ISystemDisplayService.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/ISystemDisplayService.cs
index a24aa079..12ac2cf4 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/ISystemDisplayService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/ISystemDisplayService.cs
@@ -4,7 +4,9 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
{
class ISystemDisplayService : IpcService
{
- private IApplicationDisplayService _applicationDisplayService;
+#pragma warning disable IDE0052 // Remove unread private member
+ private readonly IApplicationDisplayService _applicationDisplayService;
+#pragma warning restore IDE0052
public ISystemDisplayService(IApplicationDisplayService applicationDisplayService)
{
@@ -56,4 +58,4 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
return ResultCode.Success;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DestinationScalingMode.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DestinationScalingMode.cs
index cf459cb2..c712bb1d 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DestinationScalingMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DestinationScalingMode.cs
@@ -6,6 +6,6 @@
ScaleToWindow,
ScaleAndCrop,
None,
- PreserveAspectRatio
+ PreserveAspectRatio,
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DisplayInfo.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DisplayInfo.cs
index d46206d4..eae8a800 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DisplayInfo.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/DisplayInfo.cs
@@ -7,10 +7,10 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService.Type
struct DisplayInfo
{
public Array64<byte> Name;
- public bool LayerLimitEnabled;
- public Array7<byte> Padding;
- public ulong LayerLimitMax;
- public ulong Width;
- public ulong Height;
+ public bool LayerLimitEnabled;
+ public Array7<byte> Padding;
+ public ulong LayerLimitMax;
+ public ulong Width;
+ public ulong Height;
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/SourceScalingMode.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/SourceScalingMode.cs
index ac8c3e02..536c0d46 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/SourceScalingMode.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/ApplicationDisplayService/Types/SourceScalingMode.cs
@@ -6,6 +6,6 @@
Freeze,
ScaleToWindow,
ScaleAndCrop,
- PreserveAspectRatio
+ PreserveAspectRatio,
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/IApplicationDisplayService.cs b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/IApplicationDisplayService.cs
index 89eed5b5..3fbd7d20 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/RootService/IApplicationDisplayService.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/RootService/IApplicationDisplayService.cs
@@ -3,7 +3,6 @@ using Ryujinx.Common.Logging;
using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Applets;
using Ryujinx.HLE.HOS.Ipc;
-using Ryujinx.HLE.HOS.Kernel.Common;
using Ryujinx.HLE.HOS.Services.SurfaceFlinger;
using Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService;
using Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService.Types;
@@ -27,27 +26,27 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
public int RetrievedEventsCount;
}
- private readonly List<DisplayInfo> _displayInfo;
+ private readonly List<DisplayInfo> _displayInfo;
private readonly Dictionary<ulong, DisplayState> _openDisplays;
private int _vsyncEventHandle;
public IApplicationDisplayService(ViServiceType serviceType)
{
- _serviceType = serviceType;
- _displayInfo = new List<DisplayInfo>();
+ _serviceType = serviceType;
+ _displayInfo = new List<DisplayInfo>();
_openDisplays = new Dictionary<ulong, DisplayState>();
void AddDisplayInfo(string name, bool layerLimitEnabled, ulong layerLimitMax, ulong width, ulong height)
{
- DisplayInfo displayInfo = new DisplayInfo()
+ DisplayInfo displayInfo = new()
{
- Name = new Array64<byte>(),
+ Name = new Array64<byte>(),
LayerLimitEnabled = layerLimitEnabled,
- Padding = new Array7<byte>(),
- LayerLimitMax = layerLimitMax,
- Width = width,
- Height = height
+ Padding = new Array7<byte>(),
+ LayerLimitMax = layerLimitMax,
+ Width = width,
+ Height = height,
};
Encoding.ASCII.GetBytes(name).AsSpan().CopyTo(displayInfo.Name.AsSpan());
@@ -55,11 +54,11 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
_displayInfo.Add(displayInfo);
}
- AddDisplayInfo("Default", true, 1, 1920, 1080);
- AddDisplayInfo("External", true, 1, 1920, 1080);
- AddDisplayInfo("Edid", true, 1, 0, 0);
- AddDisplayInfo("Internal", true, 1, 1920, 1080);
- AddDisplayInfo("Null", false, 0, 1920, 1080);
+ AddDisplayInfo("Default", true, 1, 1920, 1080);
+ AddDisplayInfo("External", true, 1, 1920, 1080);
+ AddDisplayInfo("Edid", true, 1, 0, 0);
+ AddDisplayInfo("Internal", true, 1, 1920, 1080);
+ AddDisplayInfo("Null", false, 0, 1920, 1080);
}
[CommandCmif(100)]
@@ -232,10 +231,14 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
public ResultCode OpenLayer(ServiceCtx context)
{
// TODO: support multi display.
+#pragma warning disable IDE0059 // Remove unnecessary value assignment
byte[] displayName = context.RequestData.ReadBytes(0x40);
+#pragma warning restore IDE0059
- long layerId = context.RequestData.ReadInt64();
- long userId = context.RequestData.ReadInt64();
+ long layerId = context.RequestData.ReadInt64();
+#pragma warning disable IDE0059 // Remove unnecessary value assignment
+ long userId = context.RequestData.ReadInt64();
+#pragma warning restore IDE0059
ulong parcelPtr = context.Request.ReceiveBuff[0].Position;
ResultCode result = context.Device.System.SurfaceFlinger.OpenLayer(context.Request.HandleDesc.PId, layerId, out IBinder producer);
@@ -247,7 +250,7 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
context.Device.System.SurfaceFlinger.SetRenderLayer(layerId);
- Parcel parcel = new Parcel(0x28, 0x4);
+ Parcel parcel = new(0x28, 0x4);
parcel.WriteObject(producer, "dispdrv\0");
@@ -273,8 +276,10 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
// CreateStrayLayer(u32, u64) -> (u64, u64, buffer<bytes, 6>)
public ResultCode CreateStrayLayer(ServiceCtx context)
{
+#pragma warning disable IDE0059 // Remove unnecessary value assignment
long layerFlags = context.RequestData.ReadInt64();
- long displayId = context.RequestData.ReadInt64();
+ long displayId = context.RequestData.ReadInt64();
+#pragma warning restore IDE0059
ulong parcelPtr = context.Request.ReceiveBuff[0].Position;
@@ -283,7 +288,7 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
context.Device.System.SurfaceFlinger.SetRenderLayer(layerId);
- Parcel parcel = new Parcel(0x28, 0x4);
+ Parcel parcel = new(0x28, 0x4);
parcel.WriteObject(producer, "dispdrv\0");
@@ -327,10 +332,10 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
DestinationScalingMode? convertedScalingMode = scalingMode switch
{
- SourceScalingMode.None => DestinationScalingMode.None,
- SourceScalingMode.Freeze => DestinationScalingMode.Freeze,
- SourceScalingMode.ScaleAndCrop => DestinationScalingMode.ScaleAndCrop,
- SourceScalingMode.ScaleToWindow => DestinationScalingMode.ScaleToWindow,
+ SourceScalingMode.None => DestinationScalingMode.None,
+ SourceScalingMode.Freeze => DestinationScalingMode.Freeze,
+ SourceScalingMode.ScaleAndCrop => DestinationScalingMode.ScaleAndCrop,
+ SourceScalingMode.ScaleToWindow => DestinationScalingMode.ScaleToWindow,
SourceScalingMode.PreserveAspectRatio => DestinationScalingMode.PreserveAspectRatio,
_ => null,
};
@@ -354,13 +359,13 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
private ulong GetA8B8G8R8LayerSize(int width, int height, out int pitch, out int alignment)
{
- const int DefaultAlignment = 0x1000;
- const ulong DefaultSize = 0x20000;
+ const int DefaultAlignment = 0x1000;
+ const ulong DefaultSize = 0x20000;
alignment = DefaultAlignment;
- pitch = BitUtils.AlignUp(BitUtils.DivRoundUp(width * 32, 8), 64);
+ pitch = BitUtils.AlignUp(BitUtils.DivRoundUp(width * 32, 8), 64);
- int memorySize = pitch * BitUtils.AlignUp(height, 64);
+ int memorySize = pitch * BitUtils.AlignUp(height, 64);
ulong requiredMemorySize = (ulong)BitUtils.AlignUp(memorySize, alignment);
return (requiredMemorySize + DefaultSize - 1) / DefaultSize * DefaultSize;
@@ -373,18 +378,18 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
// The size of the layer buffer should be an aligned multiple of width * height
// because it was created using GetIndirectLayerImageRequiredMemoryInfo as a guide.
- long layerWidth = context.RequestData.ReadInt64();
- long layerHeight = context.RequestData.ReadInt64();
- long layerHandle = context.RequestData.ReadInt64();
+ long layerWidth = context.RequestData.ReadInt64();
+ long layerHeight = context.RequestData.ReadInt64();
+ long layerHandle = context.RequestData.ReadInt64();
ulong layerBuffPosition = context.Request.ReceiveBuff[0].Position;
- ulong layerBuffSize = context.Request.ReceiveBuff[0].Size;
+ ulong layerBuffSize = context.Request.ReceiveBuff[0].Size;
// Get the pitch of the layer that is necessary to render correctly.
ulong size = GetA8B8G8R8LayerSize((int)layerWidth, (int)layerHeight, out int pitch, out _);
Debug.Assert(layerBuffSize == size);
- RenderingSurfaceInfo surfaceInfo = new RenderingSurfaceInfo(ColorFormat.A8B8G8R8, (uint)layerWidth, (uint)layerHeight, (uint)pitch, (uint)layerBuffSize);
+ RenderingSurfaceInfo surfaceInfo = new(ColorFormat.A8B8G8R8, (uint)layerWidth, (uint)layerHeight, (uint)pitch, (uint)layerBuffSize);
// Get the applet associated with the handle.
object appletObject = context.Device.System.AppletState.IndirectLayerHandles.GetData((int)layerHandle);
@@ -425,7 +430,7 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
}
*/
- int width = (int)context.RequestData.ReadUInt64();
+ int width = (int)context.RequestData.ReadUInt64();
int height = (int)context.RequestData.ReadUInt64();
if (height < 0 || width < 0)
@@ -445,7 +450,7 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService
// NOTE: The official service setup a A8B8G8R8 texture with a linear layout and then query its size.
// As we don't need this texture on the emulator, we can just simplify this logic and directly
// do a linear layout size calculation. (stride * height * bytePerPixel)
- ulong size = GetA8B8G8R8LayerSize(width, height, out int pitch, out int alignment);
+ ulong size = GetA8B8G8R8LayerSize(width, height, out _, out int alignment);
context.ResponseData.Write(size);
context.ResponseData.Write(alignment);
diff --git a/src/Ryujinx.HLE/HOS/Services/Vi/Types/ViServiceType.cs b/src/Ryujinx.HLE/HOS/Services/Vi/Types/ViServiceType.cs
index ba6f8e5f..41c8bbfa 100644
--- a/src/Ryujinx.HLE/HOS/Services/Vi/Types/ViServiceType.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Vi/Types/ViServiceType.cs
@@ -4,6 +4,6 @@
{
Application,
Manager,
- System
+ System,
}
-} \ No newline at end of file
+}