[Ryujinx.HLE] Address dotnet-format issues (#5380)

* dotnet format style --severity info

Some changes were manually reverted.

* dotnet format analyzers --serverity info

Some changes have been minimally adapted.

* Restore a few unused methods and variables

* Silence dotnet format IDE0060 warnings

* Silence dotnet format IDE0052 warnings

* Address or silence dotnet format IDE1006 warnings

* Address dotnet format CA1816 warnings

* Address or silence dotnet format CA2208 warnings

* Address or silence dotnet format CA1806 and a few CA1854 warnings

* Address dotnet format CA2211 warnings

* Address dotnet format CA1822 warnings

* Address or silence dotnet format CA1069 warnings

* Make dotnet format succeed in style mode

* Address or silence dotnet format CA2211 warnings

* Address review comments

* Address dotnet format CA2208 warnings properly

* Make ProcessResult readonly

* Address most dotnet format whitespace warnings

* Apply dotnet format whitespace formatting

A few of them have been manually reverted and the corresponding warning was silenced

* Add previously silenced warnings back

I have no clue how these disappeared

* Revert formatting changes for while and for-loops

* Format if-blocks correctly

* Run dotnet format style after rebase

* Run dotnet format whitespace after rebase

* Run dotnet format style after rebase

* Run dotnet format analyzers after rebase

* Run dotnet format after rebase and remove unused usings

- analyzers
- style
- whitespace

* Disable 'prefer switch expression' rule

* Add comments to disabled warnings

* Fix a few disabled warnings

* Fix naming rule violation, Convert shader properties to auto-property and convert values to const

* Simplify properties and array initialization, Use const when possible, Remove trailing commas

* Start working on disabled warnings

* Fix and silence a few dotnet-format warnings again

* Run dotnet format after rebase

* Use using declaration instead of block syntax

* Address IDE0251 warnings

* Address a few disabled IDE0060 warnings

* Silence IDE0060 in .editorconfig

* Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas"

This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e.

* dotnet format whitespace after rebase

* First dotnet format pass

* Fix naming rule violations

* Fix typo

* Add trailing commas, use targeted new and use array initializer

* Fix build issues

* Fix remaining build issues

* Remove SuppressMessage for CA1069 where possible

* Address dotnet format issues

* Address formatting issues

Co-authored-by: Ac_K <acoustik666@gmail.com>

* Add GetHashCode implementation for RenderingSurfaceInfo

* Explicitly silence CA1822 for every affected method in Syscall

* Address formatting issues in Demangler.cs

* Address review feedback

Co-authored-by: Ac_K <acoustik666@gmail.com>

* Revert marking service methods as static

* Next dotnet format pass

* Address review feedback

---------

Co-authored-by: Ac_K <acoustik666@gmail.com>
This commit is contained in:
TSRBerry 2023-07-16 19:31:14 +02:00 committed by GitHub
parent fec8291c17
commit 326749498b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
1015 changed files with 8173 additions and 7615 deletions

View file

@ -2,8 +2,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
{
enum ArbitrationType
{
WaitIfLessThan = 0,
WaitIfLessThan = 0,
DecrementAndWaitIfLessThan = 1,
WaitIfEqual = 2
WaitIfEqual = 2,
}
}
}

View file

@ -38,7 +38,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return KernelResult.ThreadTerminating;
}
currentThread.SignaledObj = null;
currentThread.SignaledObj = null;
currentThread.ObjSyncResult = Result.Success;
KProcess currentProcess = KernelStatic.GetCurrentProcess();
@ -66,7 +66,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return KernelResult.InvalidHandle;
}
currentThread.MutexAddress = mutexAddress;
currentThread.MutexAddress = mutexAddress;
currentThread.ThreadHandleForUserMutex = requesterHandle;
mutexOwner.AddMutexWaiter(currentThread);
@ -76,10 +76,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
_context.CriticalSection.Leave();
_context.CriticalSection.Enter();
if (currentThread.MutexOwner != null)
{
currentThread.MutexOwner.RemoveMutexWaiter(currentThread);
}
currentThread.MutexOwner?.RemoveMutexWaiter(currentThread);
_context.CriticalSection.Leave();
@ -103,7 +100,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
if (result != Result.Success && newOwnerThread != null)
{
newOwnerThread.SignaledObj = null;
newOwnerThread.SignaledObj = null;
newOwnerThread.ObjSyncResult = result;
}
@ -118,7 +115,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
KThread currentThread = KernelStatic.GetCurrentThread();
currentThread.SignaledObj = null;
currentThread.SignaledObj = null;
currentThread.ObjSyncResult = KernelResult.TimedOut;
if (currentThread.TerminationRequested)
@ -139,9 +136,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return KernelResult.InvalidMemState;
}
currentThread.MutexAddress = mutexAddress;
currentThread.MutexAddress = mutexAddress;
currentThread.ThreadHandleForUserMutex = threadHandle;
currentThread.CondVarAddress = condVarAddress;
currentThread.CondVarAddress = condVarAddress;
_condVarThreads.Add(currentThread);
@ -164,10 +161,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
_context.CriticalSection.Enter();
if (currentThread.MutexOwner != null)
{
currentThread.MutexOwner.RemoveMutexWaiter(currentThread);
}
currentThread.MutexOwner?.RemoveMutexWaiter(currentThread);
_condVarThreads.Remove(currentThread);
@ -176,7 +170,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return currentThread.ObjSyncResult;
}
private (int, KThread) MutexUnlock(KThread currentThread, ulong mutexAddress)
private static (int, KThread) MutexUnlock(KThread currentThread, ulong mutexAddress)
{
KThread newOwnerThread = currentThread.RelinquishMutex(mutexAddress, out int count);
@ -191,7 +185,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
mutexValue |= HasListenersMask;
}
newOwnerThread.SignaledObj = null;
newOwnerThread.SignaledObj = null;
newOwnerThread.ObjSyncResult = Result.Success;
newOwnerThread.ReleaseAndResume();
@ -223,7 +217,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
if (!currentProcess.CpuMemory.IsMapped(address))
{
// Invalid address.
requester.SignaledObj = null;
requester.SignaledObj = null;
requester.ObjSyncResult = KernelResult.InvalidMemState;
return;
@ -253,7 +247,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
if (mutexValue == 0)
{
// We now own the mutex.
requester.SignaledObj = null;
requester.SignaledObj = null;
requester.ObjSyncResult = Result.Success;
requester.ReleaseAndResume();
@ -273,7 +267,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
else
{
// Invalid mutex owner.
requester.SignaledObj = null;
requester.SignaledObj = null;
requester.ObjSyncResult = KernelResult.InvalidHandle;
requester.ReleaseAndResume();
@ -293,7 +287,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return KernelResult.ThreadTerminating;
}
currentThread.SignaledObj = null;
currentThread.SignaledObj = null;
currentThread.ObjSyncResult = KernelResult.TimedOut;
if (!KernelTransfer.UserToKernel(out int currentValue, address))
@ -312,7 +306,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return KernelResult.TimedOut;
}
currentThread.MutexAddress = address;
currentThread.MutexAddress = address;
currentThread.WaitingInArbitration = true;
_arbiterThreads.Add(currentThread);
@ -363,7 +357,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return KernelResult.ThreadTerminating;
}
currentThread.SignaledObj = null;
currentThread.SignaledObj = null;
currentThread.ObjSyncResult = KernelResult.TimedOut;
KProcess currentProcess = KernelStatic.GetCurrentProcess();
@ -389,7 +383,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return KernelResult.TimedOut;
}
currentThread.MutexAddress = address;
currentThread.MutexAddress = address;
currentThread.WaitingInArbitration = true;
_arbiterThreads.Add(currentThread);
@ -551,7 +545,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
{
static void RemoveArbiterThread(KThread thread)
{
thread.SignaledObj = null;
thread.SignaledObj = null;
thread.ObjSyncResult = Result.Success;
thread.ReleaseAndResume();

View file

@ -67,4 +67,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
context.CriticalSection.Leave();
}
}
}
}

View file

@ -61,4 +61,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
}
}
}
}
}

View file

@ -7,8 +7,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
public KEvent(KernelContext context)
{
ReadableEvent = new KReadableEvent(context, this);
ReadableEvent = new KReadableEvent(context);
WritableEvent = new KWritableEvent(context, this);
}
}
}
}

View file

@ -68,7 +68,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
_prioMask &= ~(1L << _prio);
}
public KThread Current => _node?.Value;
public readonly KThread Current => _node?.Value;
public bool MoveNext()
{
@ -283,4 +283,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return _scheduledThreadsPerPrioPerCore[prio][core];
}
}
}
}

View file

@ -5,13 +5,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
{
class KReadableEvent : KSynchronizationObject
{
private readonly KEvent _parent;
private bool _signaled;
public KReadableEvent(KernelContext context, KEvent parent) : base(context)
public KReadableEvent(KernelContext context) : base(context)
{
_parent = parent;
}
public override void Signal()
@ -62,4 +59,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return _signaled;
}
}
}
}

View file

@ -9,11 +9,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
partial class KScheduler : IDisposable
{
public const int PrioritiesCount = 64;
public const int CpuCoresCount = 4;
public const int CpuCoresCount = 4;
private const int RoundRobinTimeQuantumMs = 10;
private static readonly int[] PreemptionPriorities = new int[] { 59, 59, 59, 63 };
private static readonly int[] _preemptionPriorities = { 59, 59, 59, 63 };
private static readonly int[] _srcCoresHighestPrioThreads = new int[CpuCoresCount];
@ -59,7 +59,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
private KThread CreateIdleThread(KernelContext context, int cpuCore)
{
KThread idleThread = new KThread(context);
KThread idleThread = new(context);
idleThread.Initialize(0UL, 0UL, 0UL, PrioritiesCount, cpuCore, null, ThreadType.Dummy, IdleThreadLoop);
@ -95,7 +95,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
{
KThread candidate = thread.Owner.PinnedThreads[core];
if (candidate.KernelWaitersCount == 0 && !thread.Owner.IsExceptionUserThread(candidate))
if (candidate.KernelWaitersCount == 0 && !KProcess.IsExceptionUserThread(candidate))
{
if (candidate.SchedFlags == ThreadSchedState.Running)
{
@ -378,10 +378,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
currentThread.AddCpuTime(ticksDelta);
if (currentProcess != null)
{
currentProcess.AddCpuTime(ticksDelta);
}
currentProcess?.AddCpuTime(ticksDelta);
LastContextSwitchTime = currentTicks;
@ -411,7 +408,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
for (int core = 0; core < CpuCoresCount; core++)
{
RotateScheduledQueue(context, core, PreemptionPriorities[core]);
RotateScheduledQueue(context, core, _preemptionPriorities[core]);
}
context.CriticalSection.Leave();
@ -431,7 +428,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
nextThread = context.PriorityQueue.Reschedule(prio, core, selectedThread);
}
static KThread FirstSuitableCandidateOrDefault(KernelContext context, int core, KThread selectedThread, KThread nextThread, Predicate< KThread> predicate)
static KThread FirstSuitableCandidateOrDefault(KernelContext context, int core, KThread selectedThread, KThread nextThread, Predicate<KThread> predicate)
{
foreach (KThread suggested in context.PriorityQueue.SuggestedThreads(core))
{
@ -651,11 +648,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
// Ensure that the idle thread is not blocked and can exit.
lock (_idleInterruptEventLock)
{
if (_idleInterruptEvent != null)
{
_idleInterruptEvent.Set();
}
_idleInterruptEvent?.Set();
}
}
}
}
}

View file

@ -8,7 +8,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
{
class KSynchronization
{
private KernelContext _context;
private readonly KernelContext _context;
public KSynchronization(KernelContext context)
{
@ -68,8 +68,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
syncNodes[index] = syncObjs[index].AddWaitingThread(currentThread);
}
currentThread.WaitingSync = true;
currentThread.SignaledObj = null;
currentThread.WaitingSync = true;
currentThread.SignaledObj = null;
currentThread.ObjSyncResult = result;
currentThread.Reschedule(ThreadSchedState.Paused);
@ -126,7 +126,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
if ((thread.SchedFlags & ThreadSchedState.LowMask) == ThreadSchedState.Paused)
{
thread.SignaledObj = syncObj;
thread.SignaledObj = syncObj;
thread.ObjSyncResult = Result.Success;
thread.Reschedule(ThreadSchedState.Running);
@ -139,4 +139,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
_context.CriticalSection.Leave();
}
}
}
}

View file

@ -68,10 +68,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
public LinkedListNode<KThread> ProcessListNode { get; set; }
private LinkedList<KThread> _mutexWaiters;
private readonly LinkedList<KThread> _mutexWaiters;
private LinkedListNode<KThread> _mutexWaiterNode;
private LinkedList<KThread> _pinnedWaiters;
private readonly LinkedList<KThread> _pinnedWaiters;
public KThread MutexOwner { get; private set; }
@ -659,7 +659,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
const int MaxRegistersAArch32 = 15;
const int MaxFpuRegistersAArch32 = 16;
ThreadContext context = new ThreadContext();
ThreadContext context = new();
if (Owner.Flags.HasFlag(ProcessCreationFlags.Is64Bit))
{
@ -1433,4 +1433,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
Owner.CpuMemory.Write<ushort>(_tlsAddress + TlsUserInterruptFlagOffset, 0);
}
}
}
}

View file

@ -22,4 +22,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
return _parent.ReadableEvent.Clear();
}
}
}
}

View file

@ -2,8 +2,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
{
enum SignalType
{
Signal = 0,
Signal = 0,
SignalAndIncrementIfEqual = 1,
SignalAndModifyIfEqual = 2
SignalAndModifyIfEqual = 2,
}
}

View file

@ -5,19 +5,19 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
[Flags]
enum ThreadSchedState : ushort
{
LowMask = 0xf,
HighMask = 0xfff0,
LowMask = 0xf,
HighMask = 0xfff0,
ForcePauseMask = 0x1f0,
ProcessPauseFlag = 1 << 4,
ThreadPauseFlag = 1 << 5,
ProcessPauseFlag = 1 << 4,
ThreadPauseFlag = 1 << 5,
ProcessDebugPauseFlag = 1 << 6,
BacktracePauseFlag = 1 << 7,
KernelInitPauseFlag = 1 << 8,
BacktracePauseFlag = 1 << 7,
KernelInitPauseFlag = 1 << 8,
None = 0,
Paused = 1,
Running = 2,
TerminationPending = 3
None = 0,
Paused = 1,
Running = 2,
TerminationPending = 3,
}
}
}

View file

@ -5,6 +5,6 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
Dummy,
Kernel,
Kernel2,
User
User,
}
}
}