Struct DeviceShared

Source
struct DeviceShared {
Show 20 fields raw: Device, family_index: u32, queue_index: u32, raw_queue: Queue, drop_guard: Option<DropGuard>, instance: Arc<InstanceShared>, physical_device: PhysicalDevice, enabled_extensions: Vec<&'static CStr>, extension_fns: DeviceExtensionFunctions, vendor_id: u32, pipeline_cache_validation_key: [u8; 16], timestamp_period: f32, private_caps: PrivateCapabilities, workarounds: Workarounds, features: Features, render_passes: Mutex<FastHashMap<RenderPassKey, RenderPass>>, sampler_cache: Mutex<SamplerCache>, memory_allocations_counter: InternalCounter, texture_identity_factory: ResourceIdentityFactory<Image>, texture_view_identity_factory: ResourceIdentityFactory<ImageView>,
}
Available on vulkan only.

Fields§

§raw: Device§family_index: u32§queue_index: u32§raw_queue: Queue§drop_guard: Option<DropGuard>§instance: Arc<InstanceShared>§physical_device: PhysicalDevice§enabled_extensions: Vec<&'static CStr>§extension_fns: DeviceExtensionFunctions§vendor_id: u32§pipeline_cache_validation_key: [u8; 16]§timestamp_period: f32§private_caps: PrivateCapabilities§workarounds: Workarounds§features: Features§render_passes: Mutex<FastHashMap<RenderPassKey, RenderPass>>§sampler_cache: Mutex<SamplerCache>§memory_allocations_counter: InternalCounter§texture_identity_factory: ResourceIdentityFactory<Image>

Because we have cached framebuffers which are not deleted from until the device is destroyed, if the implementation of vulkan re-uses handles we need some way to differentiate between the old handle and the new handle. This factory allows us to have a dedicated identity value for each texture.

§texture_view_identity_factory: ResourceIdentityFactory<ImageView>

As above, for texture views.

Implementations§

Source§

impl DeviceShared

Source

pub(super) unsafe fn set_object_name(&self, object: impl Handle, name: &str)

Set the name of object to name.

If name contains an interior null byte, then the name set will be truncated to that byte.

§Safety

This method inherits the safety contract from vkSetDebugUtilsObjectName. In particular:

  • object must be a valid handle for one of the following:
    • An instance-level object from the same instance as this device.
    • A physical-device-level object that descends from the same physical device as this device.
    • A device-level object that descends from this device.
  • object must be externally synchronized—only the calling thread should access it during this call.
Source

pub fn make_render_pass( &self, key: RenderPassKey, ) -> Result<RenderPass, DeviceError>

Source

fn make_memory_ranges<'a, I: 'a + Iterator<Item = MemoryRange>>( &self, buffer: &'a Buffer, ranges: I, ) -> Option<impl 'a + Iterator<Item = MappedMemoryRange<'a>>>

Source§

impl DeviceShared

Source

pub(super) fn new_binary_semaphore( &self, name: &str, ) -> Result<Semaphore, DeviceError>

Source

pub(super) fn wait_for_fence( &self, fence: &Fence, wait_value: FenceValue, timeout_ns: u64, ) -> Result<bool, DeviceError>

Trait Implementations§

Source§

impl DescriptorDevice<DescriptorSetLayout, DescriptorPool, DescriptorSet> for DeviceShared

Source§

unsafe fn create_descriptor_pool( &self, descriptor_count: &DescriptorTotalCount, max_sets: u32, flags: DescriptorPoolCreateFlags, ) -> Result<DescriptorPool, CreatePoolError>

Creates a new descriptor pool. Read more
Source§

unsafe fn destroy_descriptor_pool(&self, pool: DescriptorPool)

Destroys descriptor pool. Read more
Source§

unsafe fn alloc_descriptor_sets<'a>( &self, pool: &mut DescriptorPool, layouts: impl ExactSizeIterator<Item = &'a DescriptorSetLayout>, sets: &mut impl Extend<DescriptorSet>, ) -> Result<(), DeviceAllocationError>

Allocates descriptor sets. Read more
Source§

unsafe fn dealloc_descriptor_sets<'a>( &self, pool: &mut DescriptorPool, sets: impl Iterator<Item = DescriptorSet>, )

Deallocates descriptor sets. Read more
Source§

impl Drop for DeviceShared

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl MemoryDevice<DeviceMemory> for DeviceShared

Source§

unsafe fn allocate_memory( &self, size: u64, memory_type: u32, flags: AllocationFlags, ) -> Result<DeviceMemory, OutOfMemory>

Allocates new memory object from device. This function may be expensive and even limit maximum number of memory objects allocated. Which is the reason for sub-allocation this crate provides. Read more
Source§

unsafe fn deallocate_memory(&self, memory: DeviceMemory)

Deallocate memory object. Read more
Source§

unsafe fn map_memory( &self, memory: &mut DeviceMemory, offset: u64, size: u64, ) -> Result<NonNull<u8>, DeviceMapError>

Map region of device memory to host memory space. Read more
Source§

unsafe fn unmap_memory(&self, memory: &mut DeviceMemory)

Unmap previously mapped memory region. Read more
Source§

unsafe fn invalidate_memory_ranges( &self, _ranges: &[MappedMemoryRange<'_, DeviceMemory>], ) -> Result<(), OutOfMemory>

Invalidates ranges of memory mapped regions. Read more
Source§

unsafe fn flush_memory_ranges( &self, _ranges: &[MappedMemoryRange<'_, DeviceMemory>], ) -> Result<(), OutOfMemory>

Flushes ranges of memory mapped regions. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,