using System.Runtime.InteropServices; using NvAPIWrapper.Native.Attributes; using NvAPIWrapper.Native.General.Structures; using NvAPIWrapper.Native.Interfaces; using NvAPIWrapper.Native.Interfaces.GPU; namespace NvAPIWrapper.Native.GPU.Structures { /// /// Holds information about the system's display driver memory. /// [StructLayout(LayoutKind.Sequential, Pack = 8)] [StructureVersion(3)] public struct DisplayDriverMemoryInfoV3 : IInitializable, IDisplayDriverMemoryInfo { internal StructureVersion _Version; internal readonly uint _DedicatedVideoMemory; internal readonly uint _AvailableDedicatedVideoMemory; internal readonly uint _SystemVideoMemory; internal readonly uint _SharedSystemMemory; internal readonly uint _CurrentAvailableDedicatedVideoMemory; internal readonly uint _DedicatedVideoMemoryEvictionsSize; internal readonly uint _DedicatedVideoMemoryEvictionCount; /// public uint DedicatedVideoMemoryInkB { get => _DedicatedVideoMemory; } /// public uint AvailableDedicatedVideoMemoryInkB { get => _AvailableDedicatedVideoMemory; } /// public uint SystemVideoMemoryInkB { get => _SystemVideoMemory; } /// public uint SharedSystemMemoryInkB { get => _SharedSystemMemory; } /// public uint CurrentAvailableDedicatedVideoMemoryInkB { get => _CurrentAvailableDedicatedVideoMemory; } /// /// Size(in kb) of the total size of memory released as a result of the evictions. /// public uint DedicatedVideoMemoryEvictionsSize { get => _DedicatedVideoMemoryEvictionsSize; } /// /// Indicates the number of eviction events that caused an allocation to be removed from dedicated video memory to free /// GPU video memory to make room for other allocations. /// public uint DedicatedVideoMemoryEvictionCount { get => _DedicatedVideoMemoryEvictionCount; } /// public override string ToString() { return $"{AvailableDedicatedVideoMemoryInkB / 1024} MB ({CurrentAvailableDedicatedVideoMemoryInkB / 1024} MB) / {DedicatedVideoMemoryInkB / 1024} MB"; } } }