buffers aren't in arcs by default
This commit is contained in:
parent
0627556051
commit
dea08cd123
|
@ -74,7 +74,7 @@ define_device_owned_handle! {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Buffer {
|
impl Buffer {
|
||||||
pub fn new(device: Device, desc: BufferDesc) -> VkResult<Arc<Self>> {
|
pub fn new(device: Device, desc: BufferDesc) -> VkResult<Self> {
|
||||||
let queue_families = device.queue_families().family_indices(desc.queue_families);
|
let queue_families = device.queue_families().family_indices(desc.queue_families);
|
||||||
|
|
||||||
let sharing_mode = if queue_families.len() > 1 {
|
let sharing_mode = if queue_families.len() > 1 {
|
||||||
|
@ -98,11 +98,12 @@ impl Buffer {
|
||||||
)?
|
)?
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(Arc::new(Self::construct(
|
Ok(Self::construct(
|
||||||
device, buffer, desc.name, allocation, desc.size,
|
device, buffer, desc.name, allocation, desc.size,
|
||||||
)?))
|
)?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
pub fn map_arc(self: &mut Arc<Self>) -> VkResult<MappedBuffer<'_>> {
|
pub fn map_arc(self: &mut Arc<Self>) -> VkResult<MappedBuffer<'_>> {
|
||||||
Arc::get_mut(self).map(Self::map).unwrap()
|
Arc::get_mut(self).map(Self::map).unwrap()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1778,10 +1778,10 @@ pub struct EguiState {
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct EguiRenderState {
|
struct EguiRenderState {
|
||||||
vertices: Arc<buffers::Buffer>,
|
vertices: buffers::Buffer,
|
||||||
indices: Arc<buffers::Buffer>,
|
indices: buffers::Buffer,
|
||||||
draw_calls: Arc<buffers::Buffer>,
|
draw_calls: buffers::Buffer,
|
||||||
texture_ids: Arc<buffers::Buffer>,
|
texture_ids: buffers::Buffer,
|
||||||
textures_to_free: Vec<texture::TextureId>,
|
textures_to_free: Vec<texture::TextureId>,
|
||||||
num_draw_calls: usize,
|
num_draw_calls: usize,
|
||||||
}
|
}
|
||||||
|
@ -2067,10 +2067,7 @@ impl<W> Renderer<W> {
|
||||||
)
|
)
|
||||||
.expect("staging buffer");
|
.expect("staging buffer");
|
||||||
{
|
{
|
||||||
let mut mem = Arc::get_mut(&mut staging)
|
let mut mem = staging.map().expect("mapping staging buffer");
|
||||||
.unwrap()
|
|
||||||
.map()
|
|
||||||
.expect("mapping staging buffer");
|
|
||||||
match &delta.image {
|
match &delta.image {
|
||||||
egui::ImageData::Color(arc) => {
|
egui::ImageData::Color(arc) => {
|
||||||
let slice = unsafe {
|
let slice = unsafe {
|
||||||
|
@ -2164,13 +2161,7 @@ impl<W> Renderer<W> {
|
||||||
|
|
||||||
if let Some(pos) = delta.pos {
|
if let Some(pos) = delta.pos {
|
||||||
// SAFETY: must exist because image is not whole.
|
// SAFETY: must exist because image is not whole.
|
||||||
let existing_texture = self
|
let existing_texture = self.texture_handler.textures.get(&id).cloned().unwrap();
|
||||||
.texture_handler
|
|
||||||
.textures
|
|
||||||
.get(&id)
|
|
||||||
.cloned()
|
|
||||||
.unwrap()
|
|
||||||
.image();
|
|
||||||
|
|
||||||
cmd.image_barrier(
|
cmd.image_barrier(
|
||||||
texture.image(),
|
texture.image(),
|
||||||
|
@ -2184,7 +2175,7 @@ impl<W> Renderer<W> {
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
cmd.image_barrier(
|
cmd.image_barrier(
|
||||||
existing_texture.image(),
|
existing_texture.handle(),
|
||||||
vk::ImageAspectFlags::COLOR,
|
vk::ImageAspectFlags::COLOR,
|
||||||
vk::PipelineStageFlags2::empty(),
|
vk::PipelineStageFlags2::empty(),
|
||||||
vk::AccessFlags2::empty(),
|
vk::AccessFlags2::empty(),
|
||||||
|
@ -2204,7 +2195,7 @@ impl<W> Renderer<W> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
cmd.image_barrier(
|
cmd.image_barrier(
|
||||||
existing_texture.image(),
|
existing_texture.handle(),
|
||||||
vk::ImageAspectFlags::COLOR,
|
vk::ImageAspectFlags::COLOR,
|
||||||
vk::PipelineStageFlags2::TRANSFER,
|
vk::PipelineStageFlags2::TRANSFER,
|
||||||
vk::AccessFlags2::TRANSFER_WRITE,
|
vk::AccessFlags2::TRANSFER_WRITE,
|
||||||
|
@ -2216,7 +2207,7 @@ impl<W> Renderer<W> {
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
cmd.image_barrier(
|
cmd.image_barrier(
|
||||||
texture.image(),
|
texture.handle(),
|
||||||
vk::ImageAspectFlags::COLOR,
|
vk::ImageAspectFlags::COLOR,
|
||||||
vk::PipelineStageFlags2::TRANSFER,
|
vk::PipelineStageFlags2::TRANSFER,
|
||||||
vk::AccessFlags2::TRANSFER_WRITE,
|
vk::AccessFlags2::TRANSFER_WRITE,
|
||||||
|
@ -2313,7 +2304,7 @@ impl<W> Renderer<W> {
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut map = staging.map_arc()?;
|
let mut map = staging.map()?;
|
||||||
|
|
||||||
let (st_vertices, rest) = map.split_at_mut(vertices_size);
|
let (st_vertices, rest) = map.split_at_mut(vertices_size);
|
||||||
let (st_indices, st_drawcalls) = rest.split_at_mut(indices_size);
|
let (st_indices, st_drawcalls) = rest.split_at_mut(indices_size);
|
||||||
|
@ -2394,7 +2385,7 @@ impl<W> Renderer<W> {
|
||||||
},
|
},
|
||||||
)?;
|
)?;
|
||||||
{
|
{
|
||||||
let mut map = texture_ids.map_arc()?;
|
let mut map = texture_ids.map()?;
|
||||||
map.copy_from_slice(bytemuck::cast_slice(&textures_indices));
|
map.copy_from_slice(bytemuck::cast_slice(&textures_indices));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2412,16 +2403,15 @@ impl<W> Renderer<W> {
|
||||||
.get_sampler(entry.into_sampler_desc())
|
.get_sampler(entry.into_sampler_desc())
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
image_view: texture
|
image_view: texture
|
||||||
.view(images::ImageViewDesc {
|
.get_view(images::ImageViewDesc {
|
||||||
kind: vk::ImageViewType::TYPE_2D,
|
kind: vk::ImageViewType::TYPE_2D,
|
||||||
format: texture.image().format(),
|
format: texture.format(),
|
||||||
aspect: vk::ImageAspectFlags::COLOR,
|
aspect: vk::ImageAspectFlags::COLOR,
|
||||||
mip_range: (0..1).into(),
|
mip_range: (0..1).into(),
|
||||||
layer_range: (0..1).into(),
|
layer_range: (0..1).into(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
.unwrap()
|
.unwrap(),
|
||||||
.handle(),
|
|
||||||
image_layout: vk::ImageLayout::SHADER_READ_ONLY_OPTIMAL,
|
image_layout: vk::ImageLayout::SHADER_READ_ONLY_OPTIMAL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue