remove buffer array info
This commit is contained in:
parent
7a71873a32
commit
f98918fd5c
@ -2,7 +2,7 @@ use crate::{
|
|||||||
pipeline::VertexBufferDescriptors,
|
pipeline::VertexBufferDescriptors,
|
||||||
render_graph::{CommandQueue, Node, ResourceSlots, SystemNode},
|
render_graph::{CommandQueue, Node, ResourceSlots, SystemNode},
|
||||||
render_resource::{
|
render_resource::{
|
||||||
BufferArrayInfo, BufferInfo, BufferUsage, RenderResource, RenderResourceAssignment,
|
BufferInfo, BufferUsage, RenderResource, RenderResourceAssignment,
|
||||||
RenderResourceAssignments, RenderResourceAssignmentsId, ResourceInfo,
|
RenderResourceAssignments, RenderResourceAssignmentsId, ResourceInfo,
|
||||||
},
|
},
|
||||||
renderer::{RenderContext, RenderResourceContext, RenderResources},
|
renderer::{RenderContext, RenderResourceContext, RenderResources},
|
||||||
@ -136,36 +136,9 @@ where
|
|||||||
render_resource_context: &dyn RenderResourceContext,
|
render_resource_context: &dyn RenderResourceContext,
|
||||||
align: bool,
|
align: bool,
|
||||||
) {
|
) {
|
||||||
let new_capacity = if let Some(buffer) = buffer_array_status.buffer {
|
if buffer_array_status.current_item_capacity < buffer_array_status.new_item_count {
|
||||||
let mut new_capacity = None;
|
let new_capacity =
|
||||||
render_resource_context.get_resource_info(buffer, &mut |resource_info| {
|
buffer_array_status.new_item_count + buffer_array_status.new_item_count / 2;
|
||||||
new_capacity = if let Some(ResourceInfo::Buffer(BufferInfo {
|
|
||||||
array_info: Some(array_info),
|
|
||||||
..
|
|
||||||
})) = resource_info
|
|
||||||
{
|
|
||||||
if array_info.item_capacity < buffer_array_status.new_item_count {
|
|
||||||
// over capacity. lets resize
|
|
||||||
Some(
|
|
||||||
buffer_array_status.new_item_count
|
|
||||||
+ buffer_array_status.new_item_count / 2,
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
// under capacity. no change needed
|
|
||||||
None
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// incorrect resource type. overwrite with new buffer
|
|
||||||
Some(buffer_array_status.new_item_count)
|
|
||||||
};
|
|
||||||
});
|
|
||||||
new_capacity
|
|
||||||
} else {
|
|
||||||
// buffer does not exist. create it now.
|
|
||||||
Some(buffer_array_status.new_item_count)
|
|
||||||
};
|
|
||||||
|
|
||||||
if let Some(new_capacity) = new_capacity {
|
|
||||||
let mut item_size = buffer_array_status.item_size;
|
let mut item_size = buffer_array_status.item_size;
|
||||||
if align {
|
if align {
|
||||||
item_size = Self::get_aligned_dynamic_uniform_size(item_size);
|
item_size = Self::get_aligned_dynamic_uniform_size(item_size);
|
||||||
@ -174,14 +147,8 @@ where
|
|||||||
let total_size = item_size * new_capacity;
|
let total_size = item_size * new_capacity;
|
||||||
|
|
||||||
let buffer = render_resource_context.create_buffer(BufferInfo {
|
let buffer = render_resource_context.create_buffer(BufferInfo {
|
||||||
array_info: Some(BufferArrayInfo {
|
|
||||||
item_capacity: new_capacity,
|
|
||||||
item_size,
|
|
||||||
..Default::default()
|
|
||||||
}),
|
|
||||||
size: total_size,
|
size: total_size,
|
||||||
buffer_usage: BufferUsage::COPY_DST | BufferUsage::UNIFORM,
|
buffer_usage: BufferUsage::COPY_DST | BufferUsage::UNIFORM,
|
||||||
is_dynamic: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
buffer_array_status.current_item_capacity = new_capacity;
|
buffer_array_status.current_item_capacity = new_capacity;
|
||||||
|
|||||||
@ -1,18 +1,9 @@
|
|||||||
use crate::render_resource::BufferUsage;
|
use crate::render_resource::BufferUsage;
|
||||||
|
|
||||||
#[derive(Default, Debug, Clone, Eq, PartialEq)]
|
|
||||||
pub struct BufferArrayInfo {
|
|
||||||
pub item_size: usize,
|
|
||||||
pub item_capacity: usize,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Eq, PartialEq)]
|
#[derive(Debug, Clone, Eq, PartialEq)]
|
||||||
pub struct BufferInfo {
|
pub struct BufferInfo {
|
||||||
pub size: usize,
|
pub size: usize,
|
||||||
pub buffer_usage: BufferUsage,
|
pub buffer_usage: BufferUsage,
|
||||||
// TODO: remove array info and is_dynamic
|
|
||||||
pub array_info: Option<BufferArrayInfo>,
|
|
||||||
pub is_dynamic: bool,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for BufferInfo {
|
impl Default for BufferInfo {
|
||||||
@ -20,8 +11,6 @@ impl Default for BufferInfo {
|
|||||||
BufferInfo {
|
BufferInfo {
|
||||||
size: 0,
|
size: 0,
|
||||||
buffer_usage: BufferUsage::NONE,
|
buffer_usage: BufferUsage::NONE,
|
||||||
array_info: None,
|
|
||||||
is_dynamic: false,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user