aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/BehaviorInfo.cs
blob: 461e43370799ee1ca83e9812dcdc3f194c893e63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
namespace Ryujinx.HLE.HOS.Services.Audio.AudioRendererManager
{
    class BehaviorInfo
    {
        private const int _revision = AudioRendererConsts.Revision;

        private int _userRevision = 0;

        public BehaviorInfo()
        {
            /* TODO: this class got a size of 0xC0
                     0x00 - uint - Internal Revision
                     0x04 - uint - User Revision
                     0x08 - ... unknown ...
            */
        }

        public bool IsSplitterSupported()                  => AudioRendererCommon.CheckFeatureSupported(_userRevision, SupportTags.Splitter);
        public bool IsSplitterBugFixed()                   => AudioRendererCommon.CheckFeatureSupported(_userRevision, SupportTags.SplitterBugFix);
        public bool IsVariadicCommandBufferSizeSupported() => AudioRendererCommon.CheckFeatureSupported(_userRevision, SupportTags.VariadicCommandBufferSize);
        public bool IsElapsedFrameCountSupported()         => AudioRendererCommon.CheckFeatureSupported(_userRevision, SupportTags.ElapsedFrameCount);

        public int GetPerformanceMetricsDataFormat() => AudioRendererCommon.CheckFeatureSupported(_userRevision, SupportTags.PerformanceMetricsDataFormatVersion2) ? 2 : 1;

        public void SetUserLibRevision(int revision)
        {
            _userRevision = AudioRendererCommon.GetRevisionVersion(revision);
        }
    }
}