Record Class VmaDetailedStatistics

java.lang.Object
java.lang.Record
club.doki7.vma.datatype.VmaDetailedStatistics
All Implemented Interfaces:
IPointer, IVmaDetailedStatistics

@ValueBasedCandidate @UnsafeConstructor public record VmaDetailedStatistics(@NotNull MemorySegment segment) extends Record implements IVmaDetailedStatistics

More detailed statistics than VmaStatistics.

These are slower to calculate. Use for debugging purposes. See functions: vmaCalculateStatistics(), vmaCalculatePoolStatistics().

Previous version of the statistics API provided averages, but they have been removed because they can be easily calculated as:

VkDeviceSize allocationSizeAvg = detailedStats.statistics.allocationBytes / detailedStats.statistics.allocationCount;
VkDeviceSize unusedBytes = detailedStats.statistics.blockBytes - detailedStats.statistics.allocationBytes;
VkDeviceSize unusedRangeSizeAvg = unusedBytes / detailedStats.unusedRangeCount;

Structure

typedef struct VmaDetailedStatistics {
    VmaStatistics statistics;
    uint32_t unusedRangeCount;
    VkDeviceSize allocationSizeMin;
    VkDeviceSize allocationSizeMax;
    VkDeviceSize unusedRangeSizeMin;
    VkDeviceSize unusedRangeSizeMax;
} VmaDetailedStatistics;

Contracts

The property segment() should always be not-null (segment != NULL && !segment.equals(MemorySegment.NULL)), and properly aligned to LAYOUT.byteAlignment() bytes. To represent null pointer, you may use a Java null instead. See the documentation of IPointer.segment() for more details.

The constructor of this class is marked as UnsafeConstructor, because it does not perform any runtime check. The constructor can be useful for automatic code generators.

Member documentation

  • Field Details

    • LAYOUT

      public static final StructLayout LAYOUT
    • BYTES

      public static final long BYTES
    • PATH$statistics

      public static final MemoryLayout.PathElement PATH$statistics
    • PATH$unusedRangeCount

      public static final MemoryLayout.PathElement PATH$unusedRangeCount
    • PATH$allocationSizeMin

      public static final MemoryLayout.PathElement PATH$allocationSizeMin
    • PATH$allocationSizeMax

      public static final MemoryLayout.PathElement PATH$allocationSizeMax
    • PATH$unusedRangeSizeMin

      public static final MemoryLayout.PathElement PATH$unusedRangeSizeMin
    • PATH$unusedRangeSizeMax

      public static final MemoryLayout.PathElement PATH$unusedRangeSizeMax
    • LAYOUT$statistics

      public static final StructLayout LAYOUT$statistics
    • LAYOUT$unusedRangeCount

      public static final ValueLayout.OfInt LAYOUT$unusedRangeCount
    • LAYOUT$allocationSizeMin

      public static final ValueLayout.OfLong LAYOUT$allocationSizeMin
    • LAYOUT$allocationSizeMax

      public static final ValueLayout.OfLong LAYOUT$allocationSizeMax
    • LAYOUT$unusedRangeSizeMin

      public static final ValueLayout.OfLong LAYOUT$unusedRangeSizeMin
    • LAYOUT$unusedRangeSizeMax

      public static final ValueLayout.OfLong LAYOUT$unusedRangeSizeMax
    • SIZE$statistics

      public static final long SIZE$statistics
    • SIZE$unusedRangeCount

      public static final long SIZE$unusedRangeCount
    • SIZE$allocationSizeMin

      public static final long SIZE$allocationSizeMin
    • SIZE$allocationSizeMax

      public static final long SIZE$allocationSizeMax
    • SIZE$unusedRangeSizeMin

      public static final long SIZE$unusedRangeSizeMin
    • SIZE$unusedRangeSizeMax

      public static final long SIZE$unusedRangeSizeMax
    • OFFSET$statistics

      public static final long OFFSET$statistics
    • OFFSET$unusedRangeCount

      public static final long OFFSET$unusedRangeCount
    • OFFSET$allocationSizeMin

      public static final long OFFSET$allocationSizeMin
    • OFFSET$allocationSizeMax

      public static final long OFFSET$allocationSizeMax
    • OFFSET$unusedRangeSizeMin

      public static final long OFFSET$unusedRangeSizeMin
    • OFFSET$unusedRangeSizeMax

      public static final long OFFSET$unusedRangeSizeMax
  • Constructor Details

    • VmaDetailedStatistics

      public VmaDetailedStatistics(@NotNull @NotNull MemorySegment segment)
      Creates an instance of a VmaDetailedStatistics record class.
      Parameters:
      segment - the value for the segment record component
  • Method Details