See merge request ryubing/ryujinx!202
This commit is contained in:
LotP
2025-10-30 20:55:58 -05:00
parent ab7aeee67b
commit 92b61f9d73
43 changed files with 686 additions and 315 deletions

View File

@@ -48,36 +48,36 @@ namespace Ryujinx.Horizon.Sdk.Sf
case CommandArgType.Buffer:
HipcBufferFlags flags = argInfo.BufferFlags;
if (flags.HasFlag(HipcBufferFlags.In))
if ((flags & HipcBufferFlags.In) != 0)
{
if (flags.HasFlag(HipcBufferFlags.AutoSelect))
if ((flags & HipcBufferFlags.AutoSelect) != 0)
{
_inMapAliasBuffersCount++;
_inPointerBuffersCount++;
}
else if (flags.HasFlag(HipcBufferFlags.MapAlias))
else if ((flags & HipcBufferFlags.MapAlias) != 0)
{
_inMapAliasBuffersCount++;
}
else if (flags.HasFlag(HipcBufferFlags.Pointer))
else if ((flags & HipcBufferFlags.Pointer) != 0)
{
_inPointerBuffersCount++;
}
}
else
{
bool autoSelect = flags.HasFlag(HipcBufferFlags.AutoSelect);
if (autoSelect || flags.HasFlag(HipcBufferFlags.Pointer))
bool autoSelect = (flags & HipcBufferFlags.AutoSelect) != 0;
if (autoSelect || (flags & HipcBufferFlags.Pointer) != 0)
{
_outPointerBuffersCount++;
if (flags.HasFlag(HipcBufferFlags.FixedSize))
if ((flags & HipcBufferFlags.FixedSize) != 0)
{
_outFixedSizePointerBuffersCount++;
}
}
if (autoSelect || flags.HasFlag(HipcBufferFlags.MapAlias))
if (autoSelect || (flags & HipcBufferFlags.MapAlias) != 0)
{
_outMapAliasBuffersCount++;
}
@@ -150,17 +150,17 @@ namespace Ryujinx.Horizon.Sdk.Sf
HipcBufferFlags flags = _args[i].BufferFlags;
bool isMapAlias;
if (flags.HasFlag(HipcBufferFlags.MapAlias))
if ((flags & HipcBufferFlags.MapAlias) != 0)
{
isMapAlias = true;
}
else if (flags.HasFlag(HipcBufferFlags.Pointer))
else if ((flags & HipcBufferFlags.Pointer) != 0)
{
isMapAlias = false;
}
else /* if (flags.HasFlag(HipcBufferFlags.HipcAutoSelect)) */
else /* if (flags & HipcBufferFlags.HipcAutoSelect)) */
{
HipcBufferDescriptor descriptor = flags.HasFlag(HipcBufferFlags.In)
HipcBufferDescriptor descriptor = (flags & HipcBufferFlags.In) != 0
? context.Request.Data.SendBuffers[sendMapAliasIndex]
: context.Request.Data.ReceiveBuffers[recvMapAliasIndex];
@@ -171,7 +171,7 @@ namespace Ryujinx.Horizon.Sdk.Sf
if (isMapAlias)
{
HipcBufferDescriptor descriptor = flags.HasFlag(HipcBufferFlags.In)
HipcBufferDescriptor descriptor = (flags & HipcBufferFlags.In) != 0
? context.Request.Data.SendBuffers[sendMapAliasIndex++]
: context.Request.Data.ReceiveBuffers[recvMapAliasIndex++];
@@ -184,7 +184,7 @@ namespace Ryujinx.Horizon.Sdk.Sf
}
else
{
if (flags.HasFlag(HipcBufferFlags.In))
if ((flags & HipcBufferFlags.In) != 0)
{
HipcStaticDescriptor descriptor = context.Request.Data.SendStatics[sendPointerIndex++];
ulong address = descriptor.Address;
@@ -197,11 +197,11 @@ namespace Ryujinx.Horizon.Sdk.Sf
pointerBufferTail = Math.Max(pointerBufferTail, address + size);
}
}
else /* if (flags.HasFlag(HipcBufferFlags.Out)) */
else /* if (flags & HipcBufferFlags.Out)) */
{
ulong size;
if (flags.HasFlag(HipcBufferFlags.FixedSize))
if ((flags & HipcBufferFlags.FixedSize) != 0)
{
size = _args[i].BufferFixedSize;
}
@@ -234,12 +234,12 @@ namespace Ryujinx.Horizon.Sdk.Sf
private static bool IsMapTransferModeValid(HipcBufferFlags flags, HipcBufferMode mode)
{
if (flags.HasFlag(HipcBufferFlags.MapTransferAllowsNonSecure))
if ((flags & HipcBufferFlags.MapTransferAllowsNonSecure) != 0)
{
return mode == HipcBufferMode.NonSecure;
}
if (flags.HasFlag(HipcBufferFlags.MapTransferAllowsNonDevice))
if ((flags & HipcBufferFlags.MapTransferAllowsNonDevice) != 0)
{
return mode == HipcBufferMode.NonDevice;
}
@@ -259,18 +259,18 @@ namespace Ryujinx.Horizon.Sdk.Sf
}
HipcBufferFlags flags = _args[i].BufferFlags;
if (!flags.HasFlag(HipcBufferFlags.Out))
if ((flags & HipcBufferFlags.Out) == 0)
{
continue;
}
PointerAndSize buffer = _bufferRanges[i];
if (flags.HasFlag(HipcBufferFlags.Pointer))
if ((flags & HipcBufferFlags.Pointer) != 0)
{
response.SendStatics[recvPointerIndex] = new HipcStaticDescriptor(buffer.Address, (ushort)buffer.Size, recvPointerIndex);
}
else if (flags.HasFlag(HipcBufferFlags.AutoSelect))
else if ((flags & HipcBufferFlags.AutoSelect) != 0)
{
if (!isBufferMapAlias[i])
{