using System.Runtime.InteropServices; namespace Ryujinx.Audio.Renderer.Server.Performance { /// /// Implementation of for performance metrics version 1. /// [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x18)] public struct PerformanceFrameHeaderVersion1 : IPerformanceHeader { /// /// The magic of the performance header. /// public uint Magic; /// /// The total count of entries in this frame. /// public int EntryCount; /// /// The total count of detailed entries in this frame. /// public int EntryDetailCount; /// /// The offset of the next performance header. /// public int NextOffset; /// /// The total time taken by all the commands profiled. /// public int TotalProcessingTime; /// /// The count of voices that were dropped. /// public uint VoiceDropCount; public int GetEntryCount() { return EntryCount; } public int GetEntryCountOffset() { return 4; } public int GetEntryDetailCount() { return EntryDetailCount; } public void SetDspRunningBehind(bool isRunningBehind) { // NOTE: Not present in version 1 } public void SetEntryCount(int entryCount) { EntryCount = entryCount; } public void SetEntryDetailCount(int entryDetailCount) { EntryDetailCount = entryDetailCount; } public void SetIndex(uint index) { // NOTE: Not present in version 1 } public void SetMagic(uint magic) { Magic = magic; } public void SetNextOffset(int nextOffset) { NextOffset = nextOffset; } public void SetStartRenderingTicks(ulong startTicks) { // NOTE: not present in version 1 } public void SetTotalProcessingTime(int totalProcessingTime) { TotalProcessingTime = totalProcessingTime; } public void SetVoiceDropCount(uint voiceCount) { VoiceDropCount = voiceCount; } } }