use objc2::{extern_protocol, runtime::ProtocolObject};
use super::MTLResourceViewPool;
use crate::{MTLBuffer, MTLResourceID, MTLTexture, MTLTextureDescriptor};
extern_protocol!(
pub unsafe trait MTLTextureViewPool: MTLResourceViewPool {
#[unsafe(method(setTextureView:atIndex:))]
#[unsafe(method_family = none)]
fn set_texture_view_at_index(
&self,
texture: &ProtocolObject<dyn MTLTexture>,
index: usize,
) -> MTLResourceID;
#[unsafe(method(setTextureView:descriptor:atIndex:))]
#[unsafe(method_family = none)]
fn set_texture_view_with_descriptor_at_index(
&self,
texture: &ProtocolObject<dyn MTLTexture>,
descriptor: &MTLTextureDescriptor,
index: usize,
) -> MTLResourceID;
#[unsafe(method(setTextureViewFromBuffer:descriptor:offset:bytesPerRow:atIndex:))]
#[unsafe(method_family = none)]
fn set_texture_view_from_buffer(
&self,
buffer: &ProtocolObject<dyn MTLBuffer>,
descriptor: &MTLTextureDescriptor,
offset: usize,
bytes_per_row: usize,
index: usize,
) -> MTLResourceID;
}
);