rendy_resource/sampler/
mod.rs1mod cache;
4
5use {
6 crate::core::{device_owned, Device, DeviceId},
7 relevant::Relevant,
8 rendy_core::hal::{device::Device as _, image::SamplerDesc, Backend},
9};
10
11pub use crate::sampler::cache::SamplerCache;
12
13#[derive(Debug)]
15pub struct Sampler<B: Backend> {
16 device: DeviceId,
17 raw: B::Sampler,
18 info: SamplerDesc,
19 relevant: Relevant,
20}
21
22device_owned!(Sampler<B>);
23
24impl<B> Sampler<B>
25where
26 B: Backend,
27{
28 pub fn create(
30 device: &Device<B>,
31 info: SamplerDesc,
32 ) -> Result<Self, rendy_core::hal::device::AllocationError> {
33 let raw = unsafe { device.create_sampler(&info) }?;
35 Ok(Sampler {
36 device: device.id(),
37 raw,
38 info,
39 relevant: Relevant,
40 })
41 }
42
43 pub unsafe fn dispose(self, device: &Device<B>) {
45 self.assert_device_owner(device);
46 device.destroy_sampler(self.raw);
47 self.relevant.dispose();
48 }
49
50 pub fn raw(&self) -> &B::Sampler {
52 &self.raw
53 }
54
55 pub unsafe fn raw_mut(&mut self) -> &mut B::Sampler {
57 &mut self.raw
58 }
59}