use crate::common::*;
use crate::Foundation::*;
use crate::Metal::*;
ns_enum!(
#[underlying(NSUInteger)]
pub enum MTLPurgeableState {
MTLPurgeableStateKeepCurrent = 1,
MTLPurgeableStateNonVolatile = 2,
MTLPurgeableStateVolatile = 3,
MTLPurgeableStateEmpty = 4,
}
);
ns_enum!(
#[underlying(NSUInteger)]
pub enum MTLCPUCacheMode {
MTLCPUCacheModeDefaultCache = 0,
MTLCPUCacheModeWriteCombined = 1,
}
);
ns_enum!(
#[underlying(NSUInteger)]
pub enum MTLStorageMode {
MTLStorageModeShared = 0,
MTLStorageModeManaged = 1,
MTLStorageModePrivate = 2,
MTLStorageModeMemoryless = 3,
}
);
ns_enum!(
#[underlying(NSUInteger)]
pub enum MTLHazardTrackingMode {
MTLHazardTrackingModeDefault = 0,
MTLHazardTrackingModeUntracked = 1,
MTLHazardTrackingModeTracked = 2,
}
);
ns_options!(
#[underlying(NSUInteger)]
pub enum MTLResourceOptions {
MTLResourceCPUCacheModeDefaultCache =
MTLCPUCacheModeDefaultCache << MTLResourceCPUCacheModeShift,
MTLResourceCPUCacheModeWriteCombined =
MTLCPUCacheModeWriteCombined << MTLResourceCPUCacheModeShift,
MTLResourceStorageModeShared = MTLStorageModeShared << MTLResourceStorageModeShift,
MTLResourceStorageModeManaged = MTLStorageModeManaged << MTLResourceStorageModeShift,
MTLResourceStorageModePrivate = MTLStorageModePrivate << MTLResourceStorageModeShift,
MTLResourceStorageModeMemoryless = MTLStorageModeMemoryless << MTLResourceStorageModeShift,
MTLResourceHazardTrackingModeDefault =
MTLHazardTrackingModeDefault << MTLResourceHazardTrackingModeShift,
MTLResourceHazardTrackingModeUntracked =
MTLHazardTrackingModeUntracked << MTLResourceHazardTrackingModeShift,
MTLResourceHazardTrackingModeTracked =
MTLHazardTrackingModeTracked << MTLResourceHazardTrackingModeShift,
#[deprecated]
MTLResourceOptionCPUCacheModeDefault = MTLResourceCPUCacheModeDefaultCache,
#[deprecated]
MTLResourceOptionCPUCacheModeWriteCombined = MTLResourceCPUCacheModeWriteCombined,
}
);
extern_protocol!(
pub unsafe trait MTLResource: NSObjectProtocol {
#[cfg(feature = "Foundation_NSString")]
#[method_id(@__retain_semantics Other label)]
fn label(&self) -> Option<Id<NSString>>;
#[cfg(feature = "Foundation_NSString")]
#[method(setLabel:)]
fn setLabel(&self, label: Option<&NSString>);
#[method_id(@__retain_semantics Other device)]
fn device(&self) -> Id<ProtocolObject<dyn MTLDevice>>;
#[method(cpuCacheMode)]
fn cpuCacheMode(&self) -> MTLCPUCacheMode;
#[method(storageMode)]
fn storageMode(&self) -> MTLStorageMode;
#[method(hazardTrackingMode)]
fn hazardTrackingMode(&self) -> MTLHazardTrackingMode;
#[method(resourceOptions)]
fn resourceOptions(&self) -> MTLResourceOptions;
#[method(setPurgeableState:)]
fn setPurgeableState(&self, state: MTLPurgeableState) -> MTLPurgeableState;
#[method_id(@__retain_semantics Other heap)]
fn heap(&self) -> Option<Id<ProtocolObject<dyn MTLHeap>>>;
#[method(heapOffset)]
fn heapOffset(&self) -> NSUInteger;
#[method(allocatedSize)]
fn allocatedSize(&self) -> NSUInteger;
#[method(makeAliasable)]
unsafe fn makeAliasable(&self);
#[method(isAliasable)]
fn isAliasable(&self) -> bool;
}
unsafe impl ProtocolType for dyn MTLResource {}
);