#[repr(transparent)]pub struct Device { /* private fields */ }
Expand description
Handle to abstract device that can execute graphics, compute and ray-tracing pipelines.
Implementations§
source§impl Device
impl Device
sourcepub fn graphics(&self) -> &'static Graphics
pub fn graphics(&self) -> &'static Graphics
Returns Graphics
associated with the device instance.
sourcepub fn downgrade(&self) -> WeakDevice
pub fn downgrade(&self) -> WeakDevice
Returns weak reference to this device.
sourcepub fn create_buffer(&self, info: BufferInfo) -> Result<Buffer, OutOfMemory>
pub fn create_buffer(&self, info: BufferInfo) -> Result<Buffer, OutOfMemory>
Creates buffer with uninitialized content.
sourcepub fn create_mappable_buffer(
&self,
info: BufferInfo,
memory_usage: MemoryUsage
) -> Result<MappableBuffer, OutOfMemory>
pub fn create_mappable_buffer(
&self,
info: BufferInfo,
memory_usage: MemoryUsage
) -> Result<MappableBuffer, OutOfMemory>
Creates buffer with uninitialized content.
sourcepub fn create_buffer_static<T>(
&self,
info: BufferInfo,
data: &[T]
) -> Result<Buffer, OutOfMemory>where
T: Pod + 'static,
pub fn create_buffer_static<T>(
&self,
info: BufferInfo,
data: &[T]
) -> Result<Buffer, OutOfMemory>where
T: Pod + 'static,
Creates static buffer pre-initialized with content from [data
].
Implies MemoryUsage::Device
.
Panics
Function will panic if specified buffer size does not equal data size.
i.e. if info.size != std::mem::size_of(data)
.
pub fn create_buffer_view(
&self,
info: BufferViewInfo
) -> Result<BufferView, OutOfMemory>
sourcepub fn create_image(&self, info: ImageInfo) -> Result<Image, OutOfMemory>
pub fn create_image(&self, info: ImageInfo) -> Result<Image, OutOfMemory>
Creates image with uninitialized content.
sourcepub fn create_image_view(
&self,
info: ImageViewInfo
) -> Result<ImageView, OutOfMemory>
pub fn create_image_view(
&self,
info: ImageViewInfo
) -> Result<ImageView, OutOfMemory>
Creates view to an image.
sourcepub fn create_fence(&self) -> Result<Fence, OutOfMemory>
pub fn create_fence(&self) -> Result<Fence, OutOfMemory>
Returns handle to newly created Fence
.
Fences are create in un-signaled state.
sourcepub fn create_framebuffer(
&self,
info: FramebufferInfo
) -> Result<Framebuffer, OutOfMemory>
pub fn create_framebuffer(
&self,
info: FramebufferInfo
) -> Result<Framebuffer, OutOfMemory>
Returns handle to newly created Framebuffer
.
sourcepub fn create_graphics_pipeline(
&self,
info: GraphicsPipelineInfo
) -> Result<GraphicsPipeline, OutOfMemory>
pub fn create_graphics_pipeline(
&self,
info: GraphicsPipelineInfo
) -> Result<GraphicsPipeline, OutOfMemory>
Creates graphics pipeline.
sourcepub fn create_compute_pipeline(
&self,
info: ComputePipelineInfo
) -> Result<ComputePipeline, OutOfMemory>
pub fn create_compute_pipeline(
&self,
info: ComputePipelineInfo
) -> Result<ComputePipeline, OutOfMemory>
Creates compute pipeline.
sourcepub fn create_pipeline_layout(
&self,
info: PipelineLayoutInfo
) -> Result<PipelineLayout, OutOfMemory>
pub fn create_pipeline_layout(
&self,
info: PipelineLayoutInfo
) -> Result<PipelineLayout, OutOfMemory>
Creates pipeline layout.
sourcepub fn create_render_pass(
&self,
info: RenderPassInfo
) -> Result<RenderPass, CreateRenderPassError>
pub fn create_render_pass(
&self,
info: RenderPassInfo
) -> Result<RenderPass, CreateRenderPassError>
Creates render pass.
sourcepub fn create_semaphore(&self) -> Result<Semaphore, OutOfMemory>
pub fn create_semaphore(&self) -> Result<Semaphore, OutOfMemory>
Creates semaphore. Semaphores are created in unsignaled state.
sourcepub fn create_shader_module(
&self,
info: ShaderModuleInfo
) -> Result<ShaderModule, CreateShaderModuleError>
pub fn create_shader_module(
&self,
info: ShaderModuleInfo
) -> Result<ShaderModule, CreateShaderModuleError>
Creates new shader module from shader’s code.
sourcepub fn create_surface(
&self,
window: &impl HasRawWindowHandle,
display: &impl HasRawDisplayHandle
) -> Result<Surface, CreateSurfaceError>
pub fn create_surface(
&self,
window: &impl HasRawWindowHandle,
display: &impl HasRawDisplayHandle
) -> Result<Surface, CreateSurfaceError>
Creates surface for specified window.
sourcepub fn reset_fences(&self, fences: &mut [&mut Fence]) -> Result<(), DeviceLost>
pub fn reset_fences(&self, fences: &mut [&mut Fence]) -> Result<(), DeviceLost>
Resets fences. All specified fences must be in signalled state. Fences are moved into unsignalled state.
sourcepub fn is_fence_signalled(&self, fence: &mut Fence) -> Result<bool, DeviceLost>
pub fn is_fence_signalled(&self, fence: &mut Fence) -> Result<bool, DeviceLost>
Checks if fence is in signalled state.
sourcepub fn wait_fences(
&self,
fences: &mut [&mut Fence],
all: bool
) -> Result<(), DeviceLost>
pub fn wait_fences(
&self,
fences: &mut [&mut Fence],
all: bool
) -> Result<(), DeviceLost>
Wait for fences to become signaled.
If all
is true
- waits for all specified fences to become signaled.
Otherwise waits for at least on of specified fences to become signaled.
May return immediately if all fences are already signaled (or at least
one is signaled if all == false
). Fences are signaled by Queue
s.
See Queue::submit
.
sourcepub fn wait_idle(&self) -> Result<(), DeviceLost>
pub fn wait_idle(&self) -> Result<(), DeviceLost>
Wait for whole device to become idle. That is, wait for all pending
operations to complete. This is equivalent to calling
Queue::wait_idle
for all queues. Typically used only before device
destruction.
sourcepub fn get_acceleration_structure_build_sizes(
&self,
level: AccelerationStructureLevel,
flags: AccelerationStructureBuildFlags,
geometry: &[AccelerationStructureGeometryInfo]
) -> AccelerationStructureBuildSizesInfo
pub fn get_acceleration_structure_build_sizes(
&self,
level: AccelerationStructureLevel,
flags: AccelerationStructureBuildFlags,
geometry: &[AccelerationStructureGeometryInfo]
) -> AccelerationStructureBuildSizesInfo
Returns memory size requirements for accelelration structure build operations.
sourcepub fn create_acceleration_structure(
&self,
info: AccelerationStructureInfo
) -> Result<AccelerationStructure, OutOfMemory>
pub fn create_acceleration_structure(
&self,
info: AccelerationStructureInfo
) -> Result<AccelerationStructure, OutOfMemory>
sourcepub fn get_buffer_device_address(&self, buffer: &Buffer) -> Option<DeviceAddress>
pub fn get_buffer_device_address(&self, buffer: &Buffer) -> Option<DeviceAddress>
Returns buffers device address.
sourcepub fn get_acceleration_structure_device_address(
&self,
acceleration_structure: &AccelerationStructure
) -> DeviceAddress
pub fn get_acceleration_structure_device_address(
&self,
acceleration_structure: &AccelerationStructure
) -> DeviceAddress
Returns device address of acceleration strucutre.
sourcepub fn create_ray_tracing_pipeline(
&self,
info: RayTracingPipelineInfo
) -> Result<RayTracingPipeline, OutOfMemory>
pub fn create_ray_tracing_pipeline(
&self,
info: RayTracingPipelineInfo
) -> Result<RayTracingPipeline, OutOfMemory>
Creates ray-tracing pipeline.
pub fn create_descriptor_set_layout(
&self,
info: DescriptorSetLayoutInfo
) -> Result<DescriptorSetLayout, OutOfMemory>
pub fn create_descriptor_set(
&self,
info: DescriptorSetInfo
) -> Result<WritableDescriptorSet, DescriptorsAllocationError>
pub fn update_descriptor_sets<'a>(&self, updates: &mut [UpdateDescriptorSet<'a>])
pub fn create_sampler(&self, info: SamplerInfo) -> Result<Sampler, OutOfMemory>
pub fn create_shader_binding_table(
&self,
pipeline: &RayTracingPipeline,
info: ShaderBindingTableInfo<'_>
) -> Result<ShaderBindingTable, OutOfMemory>
pub fn map_memory(
&self,
buffer: &mut MappableBuffer,
offset: u64,
size: usize
) -> Result<&mut [MaybeUninit<u8>], MapError>
pub fn unmap_memory(&self, buffer: &mut MappableBuffer) -> bool
pub fn upload_to_memory<T>(
&self,
buffer: &mut MappableBuffer,
offset: u64,
data: &[T]
) -> Result<(), MapError>where
T: Pod,
pub fn write_buffer<T>(
&self,
buffer: &mut MappableBuffer,
offset: u64,
data: &[T]
) -> Result<(), MapError>where
T: Pod,
Trait Implementations§
source§impl PartialEq<Device> for &Device
impl PartialEq<Device> for &Device
source§impl PartialEq<Device> for Device
impl PartialEq<Device> for Device
source§impl PartialEq<WeakDevice> for &Device
impl PartialEq<WeakDevice> for &Device
source§fn eq(&self, weak: &WeakDevice) -> bool
fn eq(&self, weak: &WeakDevice) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<WeakDevice> for Device
impl PartialEq<WeakDevice> for Device
source§fn eq(&self, weak: &WeakDevice) -> bool
fn eq(&self, weak: &WeakDevice) -> bool
self
and other
values to be equal, and is used
by ==
.