Enum rafx_api::RafxBuffer
source · pub enum RafxBuffer {
Empty(RafxBufferEmpty),
}
Expand description
Memory that can be accessed by the rendering API. It may reside in CPU or GPU memory.
Buffers must not be dropped if they are in use by the GPU.
Variants§
Empty(RafxBufferEmpty)
Implementations§
source§impl RafxBuffer
impl RafxBuffer
sourcepub fn copy_to_host_visible_buffer<T: Copy>(&self, data: &[T]) -> RafxResult<()>
pub fn copy_to_host_visible_buffer<T: Copy>(&self, data: &[T]) -> RafxResult<()>
Copy all the data in the given slice into the buffer. This function will fail if the buffer is not writable by the CPU. This function will assert/panic if the buffer is too small to hold the data.
sourcepub fn copy_to_host_visible_buffer_with_offset<T: Copy>(
&self,
data: &[T],
buffer_byte_offset: u64
) -> RafxResult<()>
pub fn copy_to_host_visible_buffer_with_offset<T: Copy>( &self, data: &[T], buffer_byte_offset: u64 ) -> RafxResult<()>
Copy all the data in the given slice into the buffer with a given offset. The offset is in bytes. This function will assert/panic if the size of the buffer <= size of data + offset
sourcepub fn buffer_def(&self) -> &RafxBufferDef
pub fn buffer_def(&self) -> &RafxBufferDef
Return the definition used to create the buffer
sourcepub fn map_buffer(&self) -> RafxResult<*mut u8>
pub fn map_buffer(&self) -> RafxResult<*mut u8>
Map the contents of the buffer into CPU memory. This function will fail if the buffer is not possible to map into CPU memory (i.e. it’s GPU-only).
The mappings are “ref-counted”. Repeated calls to map the same buffer are permitted and the buffer will remain mapped until an equal number of calls to unmap_buffer are made.
Generally speaking, keeping a buffer mapped for its entire lifetime is acceptable.
sourcepub fn unmap_buffer(&self) -> RafxResult<()>
pub fn unmap_buffer(&self) -> RafxResult<()>
Unmap the contents of the buffer from CPU memory. This function will fail if the buffer is not possible to map into CPU memory (i.e. it’s GPU-only). It will also fail if the buffer is not currently mapped.
The mappings are “ref-counted”. Repeated calls to map the same buffer are permitted and the buffer will remain mapped until an equal number of calls to unmap_buffer are made.
sourcepub fn mapped_memory(&self) -> Option<*mut u8>
pub fn mapped_memory(&self) -> Option<*mut u8>
Obtain a pointer to the mapped memory. If the buffer is not mapped, None is returned.
sourcepub fn set_debug_name(&self, _name: impl AsRef<str>)
pub fn set_debug_name(&self, _name: impl AsRef<str>)
Sets a name for this buffer. This is useful for debugging, graphics debuggers/profilers such as nsight graphics or renderdoc will display this buffer with the given name in the list of resources.
sourcepub fn empty_buffer(&self) -> Option<&RafxBufferEmpty>
pub fn empty_buffer(&self) -> Option<&RafxBufferEmpty>
Get the underlying metal API object. This provides access to any internally created metal objects.
Trait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for RafxBuffer
impl Send for RafxBuffer
impl Sync for RafxBuffer
impl Unpin for RafxBuffer
impl UnwindSafe for RafxBuffer
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.