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>,
}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§
Sourcepub(super) unsafe fn set_object_name(&self, object: impl Handle, name: &str)
 
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
It must be valid to set object’s debug name
pub fn make_render_pass( &self, key: RenderPassKey, ) -> Result<RenderPass, DeviceError>
fn make_memory_ranges<'a, I: 'a + Iterator<Item = MemoryRange>>( &self, buffer: &'a Buffer, ranges: I, ) -> Option<impl 'a + Iterator<Item = MappedMemoryRange<'_>>>
pub(super) fn new_binary_semaphore( &self, name: &str, ) -> Result<Semaphore, DeviceError>
pub(super) fn wait_for_fence( &self, fence: &Fence, wait_value: FenceValue, timeout_ns: u64, ) -> Result<bool, DeviceError>
Trait Implementations§
Source§unsafe fn create_descriptor_pool(
    &self,
    descriptor_count: &DescriptorTotalCount,
    max_sets: u32,
    flags: DescriptorPoolCreateFlags,
) -> Result<DescriptorPool, CreatePoolError>
 
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)
 
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>
 
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>,
)
 
unsafe fn dealloc_descriptor_sets<'a>( &self, pool: &mut DescriptorPool, sets: impl Iterator<Item = DescriptorSet>, )
Deallocates descriptor sets. Read more
Source§unsafe fn allocate_memory(
    &self,
    size: u64,
    memory_type: u32,
    flags: AllocationFlags,
) -> Result<DeviceMemory, OutOfMemory>
 
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)
 
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>
 
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)
 
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>
 
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>
 
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> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more