// // Copyright (c) 2019-2021 Ryujinx // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . // using System; namespace Ryujinx.Audio.Renderer.Server.Performance { /// /// Information used by the performance command to store informations in the performance entry. /// public class PerformanceEntryAddresses { /// /// The memory storing the performance entry. /// public Memory BaseMemory; /// /// The offset to the start time field. /// public uint StartTimeOffset; /// /// The offset to the entry count field. /// public uint EntryCountOffset; /// /// The offset to the processing time field. /// public uint ProcessingTimeOffset; /// /// Increment the entry count. /// public void IncrementEntryCount() { BaseMemory.Span[(int)EntryCountOffset / 4]++; } /// /// Set the start time in the entry. /// /// The start time in nanoseconds. public void SetStartTime(ulong startTimeNano) { BaseMemory.Span[(int)StartTimeOffset / 4] = (int)(startTimeNano / 1000); } /// /// Set the processing time in the entry. /// /// The end time in nanoseconds. public void SetProcessingTime(ulong endTimeNano) { BaseMemory.Span[(int)ProcessingTimeOffset / 4] = (int)(endTimeNano / 1000) - BaseMemory.Span[(int)StartTimeOffset / 4]; } } }