use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLPurgeableState(pub NSUInteger);
impl MTLPurgeableState {
#[doc(alias = "MTLPurgeableStateKeepCurrent")]
pub const KeepCurrent: Self = Self(1);
#[doc(alias = "MTLPurgeableStateNonVolatile")]
pub const NonVolatile: Self = Self(2);
#[doc(alias = "MTLPurgeableStateVolatile")]
pub const Volatile: Self = Self(3);
#[doc(alias = "MTLPurgeableStateEmpty")]
pub const Empty: Self = Self(4);
}
unsafe impl Encode for MTLPurgeableState {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for MTLPurgeableState {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLCPUCacheMode(pub NSUInteger);
impl MTLCPUCacheMode {
#[doc(alias = "MTLCPUCacheModeDefaultCache")]
pub const DefaultCache: Self = Self(0);
#[doc(alias = "MTLCPUCacheModeWriteCombined")]
pub const WriteCombined: Self = Self(1);
}
unsafe impl Encode for MTLCPUCacheMode {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for MTLCPUCacheMode {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLStorageMode(pub NSUInteger);
impl MTLStorageMode {
#[doc(alias = "MTLStorageModeShared")]
pub const Shared: Self = Self(0);
#[doc(alias = "MTLStorageModeManaged")]
pub const Managed: Self = Self(1);
#[doc(alias = "MTLStorageModePrivate")]
pub const Private: Self = Self(2);
#[doc(alias = "MTLStorageModeMemoryless")]
pub const Memoryless: Self = Self(3);
}
unsafe impl Encode for MTLStorageMode {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for MTLStorageMode {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLHazardTrackingMode(pub NSUInteger);
impl MTLHazardTrackingMode {
#[doc(alias = "MTLHazardTrackingModeDefault")]
pub const Default: Self = Self(0);
#[doc(alias = "MTLHazardTrackingModeUntracked")]
pub const Untracked: Self = Self(1);
#[doc(alias = "MTLHazardTrackingModeTracked")]
pub const Tracked: Self = Self(2);
}
unsafe impl Encode for MTLHazardTrackingMode {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for MTLHazardTrackingMode {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLResourceOptions(pub NSUInteger);
bitflags::bitflags! {
impl MTLResourceOptions: NSUInteger {
#[doc(alias = "MTLResourceCPUCacheModeDefaultCache")]
const CPUCacheModeDefaultCache = MTLCPUCacheMode::DefaultCache.0<<MTLResourceCPUCacheModeShift;
#[doc(alias = "MTLResourceCPUCacheModeWriteCombined")]
const CPUCacheModeWriteCombined = MTLCPUCacheMode::WriteCombined.0<<MTLResourceCPUCacheModeShift;
#[doc(alias = "MTLResourceStorageModeShared")]
const StorageModeShared = MTLStorageMode::Shared.0<<MTLResourceStorageModeShift;
#[doc(alias = "MTLResourceStorageModeManaged")]
const StorageModeManaged = MTLStorageMode::Managed.0<<MTLResourceStorageModeShift;
#[doc(alias = "MTLResourceStorageModePrivate")]
const StorageModePrivate = MTLStorageMode::Private.0<<MTLResourceStorageModeShift;
#[doc(alias = "MTLResourceStorageModeMemoryless")]
const StorageModeMemoryless = MTLStorageMode::Memoryless.0<<MTLResourceStorageModeShift;
#[doc(alias = "MTLResourceHazardTrackingModeDefault")]
const HazardTrackingModeDefault = MTLHazardTrackingMode::Default.0<<MTLResourceHazardTrackingModeShift;
#[doc(alias = "MTLResourceHazardTrackingModeUntracked")]
const HazardTrackingModeUntracked = MTLHazardTrackingMode::Untracked.0<<MTLResourceHazardTrackingModeShift;
#[doc(alias = "MTLResourceHazardTrackingModeTracked")]
const HazardTrackingModeTracked = MTLHazardTrackingMode::Tracked.0<<MTLResourceHazardTrackingModeShift;
#[doc(alias = "MTLResourceOptionCPUCacheModeDefault")]
#[deprecated]
const OptionCPUCacheModeDefault = MTLResourceOptions::CPUCacheModeDefaultCache.0;
#[doc(alias = "MTLResourceOptionCPUCacheModeWriteCombined")]
#[deprecated]
const OptionCPUCacheModeWriteCombined = MTLResourceOptions::CPUCacheModeWriteCombined.0;
}
}
unsafe impl Encode for MTLResourceOptions {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for MTLResourceOptions {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLSparsePageSize(pub NSInteger);
impl MTLSparsePageSize {
#[doc(alias = "MTLSparsePageSize16")]
pub const Size16: Self = Self(101);
#[doc(alias = "MTLSparsePageSize64")]
pub const Size64: Self = Self(102);
#[doc(alias = "MTLSparsePageSize256")]
pub const Size256: Self = Self(103);
}
unsafe impl Encode for MTLSparsePageSize {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for MTLSparsePageSize {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLBufferSparseTier(pub NSInteger);
impl MTLBufferSparseTier {
#[doc(alias = "MTLBufferSparseTierNone")]
pub const TierNone: Self = Self(0);
#[doc(alias = "MTLBufferSparseTier1")]
pub const Tier1: Self = Self(1);
}
unsafe impl Encode for MTLBufferSparseTier {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for MTLBufferSparseTier {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLTextureSparseTier(pub NSInteger);
impl MTLTextureSparseTier {
#[doc(alias = "MTLTextureSparseTierNone")]
pub const TierNone: Self = Self(0);
#[doc(alias = "MTLTextureSparseTier1")]
pub const Tier1: Self = Self(1);
#[doc(alias = "MTLTextureSparseTier2")]
pub const Tier2: Self = Self(2);
}
unsafe impl Encode for MTLTextureSparseTier {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for MTLTextureSparseTier {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_protocol!(
#[cfg(feature = "MTLAllocation")]
pub unsafe trait MTLResource: MTLAllocation {
#[unsafe(method(label))]
#[unsafe(method_family = none)]
fn label(&self) -> Option<Retained<NSString>>;
#[unsafe(method(setLabel:))]
#[unsafe(method_family = none)]
fn setLabel(&self, label: Option<&NSString>);
#[cfg(feature = "MTLDevice")]
#[unsafe(method(device))]
#[unsafe(method_family = none)]
fn device(&self) -> Retained<ProtocolObject<dyn MTLDevice>>;
#[unsafe(method(cpuCacheMode))]
#[unsafe(method_family = none)]
fn cpuCacheMode(&self) -> MTLCPUCacheMode;
#[unsafe(method(storageMode))]
#[unsafe(method_family = none)]
fn storageMode(&self) -> MTLStorageMode;
#[unsafe(method(hazardTrackingMode))]
#[unsafe(method_family = none)]
fn hazardTrackingMode(&self) -> MTLHazardTrackingMode;
#[unsafe(method(resourceOptions))]
#[unsafe(method_family = none)]
fn resourceOptions(&self) -> MTLResourceOptions;
#[unsafe(method(setPurgeableState:))]
#[unsafe(method_family = none)]
fn setPurgeableState(&self, state: MTLPurgeableState) -> MTLPurgeableState;
#[cfg(feature = "MTLHeap")]
#[unsafe(method(heap))]
#[unsafe(method_family = none)]
fn heap(&self) -> Option<Retained<ProtocolObject<dyn MTLHeap>>>;
#[unsafe(method(heapOffset))]
#[unsafe(method_family = none)]
fn heapOffset(&self) -> NSUInteger;
#[unsafe(method(allocatedSize))]
#[unsafe(method_family = none)]
fn allocatedSize(&self) -> NSUInteger;
#[unsafe(method(makeAliasable))]
#[unsafe(method_family = none)]
unsafe fn makeAliasable(&self);
#[unsafe(method(isAliasable))]
#[unsafe(method_family = none)]
fn isAliasable(&self) -> bool;
}
);