mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-04-29 01:52:56 +00:00
SDK20 and REV15 support (ryubing/ryujinx!50)
See merge request ryubing/ryujinx!50
This commit is contained in:
@@ -33,11 +33,13 @@ namespace Ryujinx.Horizon.Audio
|
||||
AudioOutManager audioOutManager = new(_managers.AudioOutputManager);
|
||||
AudioInManager audioInManager = new(_managers.AudioInputManager);
|
||||
FinalOutputRecorderManager finalOutputRecorderManager = new();
|
||||
AudioSnoopManager audioSnoopManager = new();
|
||||
|
||||
_serverManager.RegisterObjectForServer(audioRendererManager, ServiceName.Encode("audren:u"), MaxSessionsCount);
|
||||
_serverManager.RegisterObjectForServer(audioOutManager, ServiceName.Encode("audout:u"), MaxSessionsCount);
|
||||
_serverManager.RegisterObjectForServer(audioInManager, ServiceName.Encode("audin:u"), MaxSessionsCount);
|
||||
_serverManager.RegisterObjectForServer(finalOutputRecorderManager, ServiceName.Encode("audrec:u"), MaxSessionsCount);
|
||||
_serverManager.RegisterObjectForServer(audioSnoopManager, ServiceName.Encode("auddev"), MaxSessionsCount);
|
||||
}
|
||||
|
||||
public void ServiceRequests()
|
||||
|
||||
@@ -23,10 +23,10 @@ namespace Ryujinx.Horizon.Sdk.Audio.Detail
|
||||
{
|
||||
_registry = registry;
|
||||
|
||||
BehaviourContext behaviourContext = new();
|
||||
behaviourContext.SetUserRevision((int)revision);
|
||||
BehaviourInfo behaviourInfo = new();
|
||||
behaviourInfo.SetUserRevision((int)revision);
|
||||
|
||||
_isUsbDeviceSupported = behaviourContext.IsAudioUsbDeviceOutputSupported();
|
||||
_isUsbDeviceSupported = behaviourInfo.IsAudioUsbDeviceOutputSupported();
|
||||
_sessions = registry.GetSessionByAppletResourceId(appletResourceId.Id);
|
||||
|
||||
Os.CreateSystemEvent(out _audioEvent, EventClearMode.AutoClear, interProcess: true);
|
||||
|
||||
@@ -61,7 +61,7 @@ namespace Ryujinx.Horizon.Sdk.Audio.Detail
|
||||
[CmifCommand(1)]
|
||||
public Result GetWorkBufferSize(out long workBufferSize, AudioRendererParameterInternal parameter)
|
||||
{
|
||||
if (BehaviourContext.CheckValidRevision(parameter.Configuration.Revision))
|
||||
if (BehaviourInfo.CheckValidRevision(parameter.Configuration.Revision))
|
||||
{
|
||||
workBufferSize = (long)Ryujinx.Audio.Renderer.Server.AudioRendererManager.GetWorkBufferSize(ref parameter.Configuration);
|
||||
|
||||
@@ -73,7 +73,7 @@ namespace Ryujinx.Horizon.Sdk.Audio.Detail
|
||||
{
|
||||
workBufferSize = 0;
|
||||
|
||||
Logger.Warning?.Print(LogClass.ServiceAudio, $"Library Revision REV{BehaviourContext.GetRevisionNumber(parameter.Configuration.Revision)} is not supported!");
|
||||
Logger.Warning?.Print(LogClass.ServiceAudio, $"Library Revision REV{BehaviourInfo.GetRevisionNumber(parameter.Configuration.Revision)} is not supported!");
|
||||
|
||||
return AudioResult.UnsupportedRevision;
|
||||
}
|
||||
|
||||
@@ -1,30 +1,64 @@
|
||||
using Ryujinx.Horizon.Common;
|
||||
using Ryujinx.Horizon.Sdk.Sf;
|
||||
using Ryujinx.Horizon.Sdk.Sf.Hipc;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Horizon.Sdk.Audio.Detail
|
||||
{
|
||||
partial class AudioSnoopManager : IAudioSnoopManager
|
||||
{
|
||||
private byte[] _dspStatisticsParameter;
|
||||
|
||||
// Note: The interface changed completely on firmware 17.0.0, this implementation is for older firmware.
|
||||
|
||||
[CmifCommand(0)]
|
||||
[CmifCommand(0)] // [6.0.0-16.1.0]
|
||||
public Result EnableDspUsageMeasurement()
|
||||
{
|
||||
return Result.Success;
|
||||
}
|
||||
|
||||
[CmifCommand(1)]
|
||||
[CmifCommand(1)] // [6.0.0-16.1.0]
|
||||
public Result DisableDspUsageMeasurement()
|
||||
{
|
||||
return Result.Success;
|
||||
}
|
||||
|
||||
[CmifCommand(6)]
|
||||
|
||||
[CmifCommand(6)] // [6.0.0-16.1.0]
|
||||
public Result GetDspUsage(out uint usage)
|
||||
{
|
||||
usage = 0;
|
||||
|
||||
return Result.Success;
|
||||
}
|
||||
|
||||
[CmifCommand(0)] // 17.0.0+
|
||||
public Result GetDspStatistics(out uint statistics) => GetDspUsage(out statistics);
|
||||
|
||||
[CmifCommand(1)] // 20.0.0+
|
||||
public Result GetAppletStateSummaries([Buffer(HipcBufferFlags.Out | HipcBufferFlags.MapAlias)] Span<byte> summaries)
|
||||
{
|
||||
// Since we do not have any real applets, return empty state summaries.
|
||||
summaries.Clear();
|
||||
|
||||
return Result.Success;
|
||||
}
|
||||
|
||||
[CmifCommand(2)] // 20.0.0+
|
||||
public Result SetDspStatisticsParameter([Buffer(HipcBufferFlags.In | HipcBufferFlags.MapAlias)] ReadOnlySpan<byte> parameter)
|
||||
{
|
||||
_dspStatisticsParameter = null;
|
||||
_dspStatisticsParameter = new byte[0x100];
|
||||
parameter.CopyTo(_dspStatisticsParameter);
|
||||
|
||||
return Result.Success;
|
||||
}
|
||||
|
||||
[CmifCommand(3)] // 20.0.0+
|
||||
public Result GetDspStatisticsParameter([Buffer(HipcBufferFlags.Out | HipcBufferFlags.MapAlias)] Span<byte> parameter)
|
||||
{
|
||||
_dspStatisticsParameter.CopyTo(parameter);
|
||||
|
||||
return Result.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Ryujinx.Horizon.Common;
|
||||
using Ryujinx.Horizon.Sdk.Sf;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Horizon.Sdk.Audio.Detail
|
||||
{
|
||||
@@ -8,5 +9,10 @@ namespace Ryujinx.Horizon.Sdk.Audio.Detail
|
||||
Result EnableDspUsageMeasurement();
|
||||
Result DisableDspUsageMeasurement();
|
||||
Result GetDspUsage(out uint usage);
|
||||
|
||||
Result GetDspStatistics(out uint statistics);
|
||||
Result GetAppletStateSummaries(Span<byte> summaries);
|
||||
Result SetDspStatisticsParameter(ReadOnlySpan<byte> parameter);
|
||||
Result GetDspStatisticsParameter(Span<byte> parameter);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user