icrate 0.1.2

Bindings to Apple's frameworks
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use crate::common::*;
use crate::Foundation::*;
use crate::Metal::*;

ns_enum!(
    #[underlying(NSUInteger)]
    pub enum MTLSparseTextureMappingMode {
        MTLSparseTextureMappingModeMap = 0,
        MTLSparseTextureMappingModeUnmap = 1,
    }
);

extern_struct!(
    #[encoding_name("?")]
    pub struct MTLMapIndirectArguments {
        pub regionOriginX: u32,
        pub regionOriginY: u32,
        pub regionOriginZ: u32,
        pub regionSizeWidth: u32,
        pub regionSizeHeight: u32,
        pub regionSizeDepth: u32,
        pub mipMapLevel: u32,
        pub sliceId: u32,
    }
);

extern_protocol!(
    pub unsafe trait MTLResourceStateCommandEncoder: MTLCommandEncoder {
        #[optional]
        #[method(updateTextureMappings:mode:regions:mipLevels:slices:numRegions:)]
        unsafe fn updateTextureMappings_mode_regions_mipLevels_slices_numRegions(
            &self,
            texture: &ProtocolObject<dyn MTLTexture>,
            mode: MTLSparseTextureMappingMode,
            regions: NonNull<MTLRegion>,
            mip_levels: NonNull<NSUInteger>,
            slices: NonNull<NSUInteger>,
            num_regions: NSUInteger,
        );

        #[optional]
        #[method(updateTextureMapping:mode:region:mipLevel:slice:)]
        unsafe fn updateTextureMapping_mode_region_mipLevel_slice(
            &self,
            texture: &ProtocolObject<dyn MTLTexture>,
            mode: MTLSparseTextureMappingMode,
            region: MTLRegion,
            mip_level: NSUInteger,
            slice: NSUInteger,
        );

        #[optional]
        #[method(updateTextureMapping:mode:indirectBuffer:indirectBufferOffset:)]
        unsafe fn updateTextureMapping_mode_indirectBuffer_indirectBufferOffset(
            &self,
            texture: &ProtocolObject<dyn MTLTexture>,
            mode: MTLSparseTextureMappingMode,
            indirect_buffer: &ProtocolObject<dyn MTLBuffer>,
            indirect_buffer_offset: NSUInteger,
        );

        #[optional]
        #[method(updateFence:)]
        unsafe fn updateFence(&self, fence: &ProtocolObject<dyn MTLFence>);

        #[optional]
        #[method(waitForFence:)]
        unsafe fn waitForFence(&self, fence: &ProtocolObject<dyn MTLFence>);

        #[optional]
        #[method(moveTextureMappingsFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:)]
        unsafe fn moveTextureMappingsFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin(
            &self,
            source_texture: &ProtocolObject<dyn MTLTexture>,
            source_slice: NSUInteger,
            source_level: NSUInteger,
            source_origin: MTLOrigin,
            source_size: MTLSize,
            destination_texture: &ProtocolObject<dyn MTLTexture>,
            destination_slice: NSUInteger,
            destination_level: NSUInteger,
            destination_origin: MTLOrigin,
        );
    }

    unsafe impl ProtocolType for dyn MTLResourceStateCommandEncoder {}
);