//! This file has been automatically generated by `objc2`'s `header-translator`. //! DO NOT EDIT use core::ffi::*; use core::ptr::NonNull; use objc2::__framework_prelude::*; use objc2_foundation::*; use crate::*; extern_class!( /// Specifies the parameters for MTLResidencySet creation. /// /// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtlresidencysetdescriptor?language=objc) #[unsafe(super(NSObject))] #[derive(Debug, PartialEq, Eq, Hash)] pub struct MTLResidencySetDescriptor; ); extern_conformance!( unsafe impl NSCopying for MTLResidencySetDescriptor {} ); unsafe impl CopyingHelper for MTLResidencySetDescriptor { type Result = Self; } extern_conformance!( unsafe impl NSObjectProtocol for MTLResidencySetDescriptor {} ); impl MTLResidencySetDescriptor { extern_methods!( /// An optional label for the MTLResidencySet. #[unsafe(method(label))] #[unsafe(method_family = none)] pub fn label(&self) -> Option>; /// Setter for [`label`][Self::label]. /// /// This is [copied][objc2_foundation::NSCopying::copy] when set. #[unsafe(method(setLabel:))] #[unsafe(method_family = none)] pub fn setLabel(&self, label: Option<&NSString>); /// If non-zero, defines the number of allocations for which to initialize the internal arrays. Defaults to zero. #[unsafe(method(initialCapacity))] #[unsafe(method_family = none)] pub fn initialCapacity(&self) -> NSUInteger; /// Setter for [`initialCapacity`][Self::initialCapacity]. /// /// # Safety /// /// This might not be bounds-checked. #[unsafe(method(setInitialCapacity:))] #[unsafe(method_family = none)] pub unsafe fn setInitialCapacity(&self, initial_capacity: NSUInteger); ); } /// Methods declared on superclass `NSObject`. impl MTLResidencySetDescriptor { extern_methods!( #[unsafe(method(init))] #[unsafe(method_family = init)] pub fn init(this: Allocated) -> Retained; #[unsafe(method(new))] #[unsafe(method_family = new)] pub fn new() -> Retained; ); } impl DefaultRetained for MTLResidencySetDescriptor { #[inline] fn default_retained() -> Retained { Self::new() } } extern_protocol!( /// A residency set is responsible for managing resource and heap residency and is referenced /// by a command buffer or command queue in order to ensure that resources and heaps are resident. /// Resources and heaps are added and removed uncommitted and a subsequent commit call applies all /// of the changes in bulk. /// /// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtlresidencyset?language=objc) pub unsafe trait MTLResidencySet: NSObjectProtocol { #[cfg(feature = "MTLDevice")] /// The device that created the residency set #[unsafe(method(device))] #[unsafe(method_family = none)] fn device(&self) -> Retained>; /// The label specified at creation. #[unsafe(method(label))] #[unsafe(method_family = none)] fn label(&self) -> Option>; /// The memory footprint of the set in bytes at the last commit operation. This may include internal allocations as well. #[unsafe(method(allocatedSize))] #[unsafe(method_family = none)] fn allocatedSize(&self) -> u64; /// Requests that the set and all the committed resources and heaps are made resident. #[unsafe(method(requestResidency))] #[unsafe(method_family = none)] fn requestResidency(&self); /// Requests that the set and all the committed resources and heaps are made non-resident. #[unsafe(method(endResidency))] #[unsafe(method_family = none)] fn endResidency(&self); #[cfg(feature = "MTLAllocation")] /// Adds one allocation to the set, leaving it uncommitted until commit is called. #[unsafe(method(addAllocation:))] #[unsafe(method_family = none)] fn addAllocation(&self, allocation: &ProtocolObject); #[cfg(feature = "MTLAllocation")] /// Adds allocations to the set, leaving them uncommitted until commit is called. /// /// # Safety /// /// - `allocations` must be a valid pointer. /// - `count` might not be bounds-checked. #[unsafe(method(addAllocations:count:))] #[unsafe(method_family = none)] unsafe fn addAllocations_count( &self, allocations: NonNull>>, count: NSUInteger, ); #[cfg(feature = "MTLAllocation")] /// Marks an allocation to be removed from the set on the next commit call. #[unsafe(method(removeAllocation:))] #[unsafe(method_family = none)] fn removeAllocation(&self, allocation: &ProtocolObject); #[cfg(feature = "MTLAllocation")] /// Marks allocations to be removed from the set on the next commit call. /// /// # Safety /// /// - `allocations` must be a valid pointer. /// - `count` might not be bounds-checked. #[unsafe(method(removeAllocations:count:))] #[unsafe(method_family = none)] unsafe fn removeAllocations_count( &self, allocations: NonNull>>, count: NSUInteger, ); /// Marks all allocations to be removed from the set on the next commit call. #[unsafe(method(removeAllAllocations))] #[unsafe(method_family = none)] fn removeAllAllocations(&self); #[cfg(feature = "MTLAllocation")] /// Returns a boolean indicating whether the allocation is present in the set or not. /// /// This check includes non-committed allocations in the set. #[unsafe(method(containsAllocation:))] #[unsafe(method_family = none)] fn containsAllocation(&self, an_allocation: &ProtocolObject) -> bool; #[cfg(feature = "MTLAllocation")] /// Array of all allocations associated with the set. /// /// This property includes non-committed allocations in the set. #[unsafe(method(allAllocations))] #[unsafe(method_family = none)] fn allAllocations(&self) -> Retained>>; /// Returns the current number of unique allocations present in the set. /// /// This property includes non-committed allocations in the set. #[unsafe(method(allocationCount))] #[unsafe(method_family = none)] fn allocationCount(&self) -> NSUInteger; /// Commits any pending adds/removes. /// /// If the residency set is resident, this will try to make added resources and heaps resident instantly, and make removed resources and heaps non-resident. #[unsafe(method(commit))] #[unsafe(method_family = none)] fn commit(&self); } );