Path: blob/main/crates/bevy_render/src/render_resource/buffer.rs
9308 views
use crate::renderer::WgpuWrapper;1use bevy_utils::define_atomic_id;2use core::ops::{Deref, RangeBounds};34define_atomic_id!(BufferId);56#[derive(Clone, Debug)]7pub struct Buffer {8id: BufferId,9value: WgpuWrapper<wgpu::Buffer>,10}1112impl Buffer {13#[inline]14pub fn id(&self) -> BufferId {15self.id16}1718pub fn slice(&self, bounds: impl RangeBounds<wgpu::BufferAddress>) -> BufferSlice<'_> {19BufferSlice {20id: self.id,21value: self.value.slice(bounds),22}23}2425#[inline]26pub fn unmap(&self) {27self.value.unmap();28}29}3031impl From<wgpu::Buffer> for Buffer {32fn from(value: wgpu::Buffer) -> Self {33Buffer {34id: BufferId::new(),35value: WgpuWrapper::new(value),36}37}38}3940impl Deref for Buffer {41type Target = wgpu::Buffer;4243#[inline]44fn deref(&self) -> &Self::Target {45&self.value46}47}4849#[derive(Clone, Debug)]50pub struct BufferSlice<'a> {51id: BufferId,52value: wgpu::BufferSlice<'a>,53}5455impl<'a> BufferSlice<'a> {56#[inline]57pub fn id(&self) -> BufferId {58self.id59}60}6162impl<'a> Deref for BufferSlice<'a> {63type Target = wgpu::BufferSlice<'a>;6465#[inline]66fn deref(&self) -> &Self::Target {67&self.value68}69}707172