use bitflags::bitflags;
use objc2::{Encode, Encoding, RefEncode};
pub const MTL_RESOURCE_CPU_CACHE_MODE_SHIFT: usize = 0;
pub const MTL_RESOURCE_CPU_CACHE_MODE_MASK: usize = 0xf << MTL_RESOURCE_CPU_CACHE_MODE_SHIFT;
pub const MTL_RESOURCE_STORAGE_MODE_SHIFT: usize = 4;
pub const MTL_RESOURCE_STORAGE_MODE_MASK: usize = 0xf << MTL_RESOURCE_STORAGE_MODE_SHIFT;
pub const MTL_RESOURCE_HAZARD_TRACKING_MODE_SHIFT: usize = 8;
pub const MTL_RESOURCE_HAZARD_TRACKING_MODE_MASK: usize = 0x3 << MTL_RESOURCE_HAZARD_TRACKING_MODE_SHIFT;
bitflags! {
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, PartialOrd, Ord)]
pub struct MTLResourceOptions: usize {
const CPU_CACHE_MODE_DEFAULT_CACHE = 0 << MTL_RESOURCE_CPU_CACHE_MODE_SHIFT;
const CPU_CACHE_MODE_WRITE_COMBINED = 1 << MTL_RESOURCE_CPU_CACHE_MODE_SHIFT;
const STORAGE_MODE_SHARED = 0 << MTL_RESOURCE_STORAGE_MODE_SHIFT;
#[deprecated(note = "managed storage has no effect on Apple Silicon; use STORAGE_MODE_SHARED")]
const STORAGE_MODE_MANAGED = 1 << MTL_RESOURCE_STORAGE_MODE_SHIFT;
const STORAGE_MODE_PRIVATE = 2 << MTL_RESOURCE_STORAGE_MODE_SHIFT;
const STORAGE_MODE_MEMORYLESS= 3 << MTL_RESOURCE_STORAGE_MODE_SHIFT;
const HAZARD_TRACKING_MODE_DEFAULT = 0 << MTL_RESOURCE_HAZARD_TRACKING_MODE_SHIFT;
const HAZARD_TRACKING_MODE_UNTRACKED = 1 << MTL_RESOURCE_HAZARD_TRACKING_MODE_SHIFT;
const HAZARD_TRACKING_MODE_TRACKED = 2 << MTL_RESOURCE_HAZARD_TRACKING_MODE_SHIFT;
#[deprecated(note = "use CPU_CACHE_MODE_DEFAULT_CACHE")]
const OPTION_CPU_CACHE_MODE_DEFAULT = 0 << MTL_RESOURCE_CPU_CACHE_MODE_SHIFT;
#[deprecated(note = "use CPU_CACHE_MODE_WRITE_COMBINED")]
const OPTION_CPU_CACHE_MODE_WRITE_COMBINED = 1 << MTL_RESOURCE_CPU_CACHE_MODE_SHIFT;
}
}
unsafe impl Encode for MTLResourceOptions {
const ENCODING: Encoding = usize::ENCODING;
}
unsafe impl RefEncode for MTLResourceOptions {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}