Struct wgpu_hal::BufferBinding

source ·
pub struct BufferBinding<'a, B: DynBuffer + ?Sized> {
    pub buffer: &'a B,
    pub offset: BufferAddress,
    pub size: Option<BufferSize>,
}
Expand description

A region of a buffer made visible to shaders via a BindGroup.

Accessible region

wgpu_hal guarantees that shaders compiled with ShaderModuleDescriptor::runtime_checks set to true cannot read or write data via this binding outside the accessible region of buffer:

Note that this guarantee is stricter than WGSL’s requirements for out-of-bounds accesses, as WGSL allows them to return values from elsewhere in the buffer. But this guarantee is necessary anyway, to permit wgpu-core to avoid clearing uninitialized regions of buffers that will never be read by the application before they are overwritten. This optimization consults bind group buffer binding regions to determine which parts of which buffers shaders might observe. This optimization is only sound if shader access is bounds-checked.

Fields§

§buffer: &'a B

The buffer being bound.

§offset: BufferAddress

The offset at which the bound region starts.

This must be less than the size of the buffer. Some back ends cannot tolerate zero-length regions; for example, see VUID-VkDescriptorBufferInfo-offset-00340 and VUID-VkDescriptorBufferInfo-range-00341, or the documentation for GLES’s glBindBufferRange.

§size: Option<BufferSize>

The size of the region bound, in bytes.

If None, the region extends from offset to the end of the buffer. Given the restrictions on offset, this means that the size is always greater than zero.

Implementations§

Trait Implementations§

source§

impl<'a, T: DynBuffer + ?Sized> Clone for BufferBinding<'a, T>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a, B: Debug + DynBuffer + ?Sized> Debug for BufferBinding<'a, B>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, B: ?Sized> RefUnwindSafe for BufferBinding<'a, B>
where B: RefUnwindSafe,

§

impl<'a, B: ?Sized> Send for BufferBinding<'a, B>

§

impl<'a, B: ?Sized> Sync for BufferBinding<'a, B>

§

impl<'a, B: ?Sized> Unpin for BufferBinding<'a, B>

§

impl<'a, B: ?Sized> UnwindSafe for BufferBinding<'a, B>
where B: RefUnwindSafe,

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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

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>,

§

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>

§

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

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

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