lets not consume the canvasframe
This commit is contained in:
@@ -385,7 +385,7 @@ impl CanvasState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Consume and allocate the canvas frame data to the GPU
|
/// Consume and allocate the canvas frame data to the GPU
|
||||||
pub fn allocate(&mut self, canvas_frame: CanvasFrame) -> CanvasFrameAllocation {
|
pub fn allocate(&mut self, canvas_frame: &CanvasFrame) -> CanvasFrameAllocation {
|
||||||
|
|
||||||
let mut colored_vertex_buffer: Vec<ColorVertex3D> = Vec::default();
|
let mut colored_vertex_buffer: Vec<ColorVertex3D> = Vec::default();
|
||||||
let mut textured_vertex_buffer: HashMap<Arc<CanvasTextureHandle>, Vec<TextureVertex3D>> = HashMap::new();
|
let mut textured_vertex_buffer: HashMap<Arc<CanvasTextureHandle>, Vec<TextureVertex3D>> = HashMap::new();
|
||||||
@@ -394,13 +394,13 @@ impl CanvasState {
|
|||||||
let mut text_vertex_buffer: Vec<ColorVertex3D> = Vec::new();
|
let mut text_vertex_buffer: Vec<ColorVertex3D> = Vec::new();
|
||||||
|
|
||||||
// separate the mux of vertex containers back out
|
// separate the mux of vertex containers back out
|
||||||
for value in canvas_frame.map {
|
for value in &canvas_frame.map {
|
||||||
match value {
|
match value {
|
||||||
VertexType::TextureType(vertices, handle) => {
|
VertexType::TextureType(vertices, handle) => {
|
||||||
textured_vertex_buffer.entry(handle).or_insert(vertices.clone()).extend(vertices);
|
textured_vertex_buffer.entry(handle.clone()).or_insert(vertices.clone()).extend(vertices);
|
||||||
}
|
}
|
||||||
VertexType::ImageType(vertices, handle) => {
|
VertexType::ImageType(vertices, handle) => {
|
||||||
image_vertex_buffer.entry(handle).or_insert(vertices.clone()).extend(vertices);
|
image_vertex_buffer.entry(handle.clone()).or_insert(vertices.clone()).extend(vertices);
|
||||||
}
|
}
|
||||||
VertexType::ColorType(vertices) => {
|
VertexType::ColorType(vertices) => {
|
||||||
colored_vertex_buffer.extend(vertices);
|
colored_vertex_buffer.extend(vertices);
|
||||||
|
|||||||
@@ -90,12 +90,12 @@ impl CompuState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn compute_commands(&mut self,
|
pub fn compute_commands(&mut self,
|
||||||
compute_frame: CompuFrame,
|
compute_frame: &CompuFrame,
|
||||||
mut command_buffer: &mut AutoCommandBufferBuilder,
|
mut command_buffer: &mut AutoCommandBufferBuilder,
|
||||||
canvas: &CanvasState) {
|
canvas: &CanvasState) {
|
||||||
|
|
||||||
// i = (Buffer, Kernel)
|
// i = (Buffer, Kernel)
|
||||||
for i in compute_frame.pure_compute {
|
for i in &compute_frame.pure_compute {
|
||||||
let buffer_id = (*i.0).clone().get_handle() as usize;
|
let buffer_id = (*i.0).clone().get_handle() as usize;
|
||||||
let kernel_id = (*i.1).clone().get_handle() as usize;
|
let kernel_id = (*i.1).clone().get_handle() as usize;
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ impl CompuState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// i = (Buffer, Image, Kernel)
|
// i = (Buffer, Image, Kernel)
|
||||||
for i in compute_frame.swapped_to_image {
|
for i in &compute_frame.swapped_to_image {
|
||||||
let buffer_id = (*i.0).clone().get_handle() as usize;
|
let buffer_id = (*i.0).clone().get_handle() as usize;
|
||||||
let image_id = i.1.clone();
|
let image_id = i.1.clone();
|
||||||
let kernel_id = (*i.2).clone().handle as usize;
|
let kernel_id = (*i.2).clone().handle as usize;
|
||||||
@@ -140,7 +140,7 @@ impl CompuState {
|
|||||||
|
|
||||||
// i = (Input Buffer, Output Buffer, Kernel)
|
// i = (Input Buffer, Output Buffer, Kernel)
|
||||||
// Input buffer -> Kernel -> Output buffer
|
// Input buffer -> Kernel -> Output buffer
|
||||||
for i in compute_frame.swapped_to_buffer {
|
for i in &compute_frame.swapped_to_buffer {
|
||||||
let input_buffer_id = (*i.0).clone().get_handle() as usize;
|
let input_buffer_id = (*i.0).clone().get_handle() as usize;
|
||||||
let output_buffer_id = (*i.1).clone().get_handle() as usize;
|
let output_buffer_id = (*i.1).clone().get_handle() as usize;
|
||||||
let kernel_id = (*i.2).clone().handle as usize;
|
let kernel_id = (*i.2).clone().handle as usize;
|
||||||
|
|||||||
12
src/main.rs
12
src/main.rs
@@ -235,7 +235,8 @@ pub fn main() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let mut event_stack = Vec::new();
|
|
||||||
|
let mut canvas_frame = CanvasFrame::default();
|
||||||
|
|
||||||
// Events loop is borrowed from the surface
|
// Events loop is borrowed from the surface
|
||||||
events_loop.run(move |event, _, control_flow| {
|
events_loop.run(move |event, _, control_flow| {
|
||||||
@@ -255,14 +256,13 @@ pub fn main() {
|
|||||||
device_id, state, button, modifiers
|
device_id, state, button, modifiers
|
||||||
}, ..
|
}, ..
|
||||||
} => {
|
} => {
|
||||||
event_stack.push(event.clone());
|
|
||||||
}
|
}
|
||||||
Event::UserEvent(TrEvent::KeyHeldEvent {}) => {}
|
Event::UserEvent(TrEvent::KeyHeldEvent {}) => {}
|
||||||
Event::UserEvent(TrEvent::MouseHeldEvent {}) => {}
|
Event::UserEvent(TrEvent::MouseHeldEvent {}) => {}
|
||||||
Event::UserEvent(TrEvent::GamepadEvent { gil_event }) => {}
|
Event::UserEvent(TrEvent::GamepadEvent { gil_event }) => {}
|
||||||
Event::DeviceEvent { event: DeviceEvent::Key(keyboard_input), .. } => {
|
Event::DeviceEvent { event: DeviceEvent::Key(keyboard_input), .. } => {
|
||||||
|
|
||||||
event_stack.push(event);
|
|
||||||
|
|
||||||
match keyboard_input.virtual_keycode.unwrap() {
|
match keyboard_input.virtual_keycode.unwrap() {
|
||||||
VirtualKeyCode::A => {
|
VirtualKeyCode::A => {
|
||||||
@@ -299,7 +299,7 @@ pub fn main() {
|
|||||||
// accumulator_time -= step_size;
|
// accumulator_time -= step_size;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
let mut canvas_frame = CanvasFrame::default();
|
|
||||||
canvas_frame.draw(&funky_sprite);
|
canvas_frame.draw(&funky_sprite);
|
||||||
canvas_frame.draw(&compu_sprite1);
|
canvas_frame.draw(&compu_sprite1);
|
||||||
canvas_frame.draw(&slider);
|
canvas_frame.draw(&slider);
|
||||||
@@ -311,8 +311,8 @@ pub fn main() {
|
|||||||
{
|
{
|
||||||
let g = hprof::enter("Run");
|
let g = hprof::enter("Run");
|
||||||
processor.run(&surface.clone(),
|
processor.run(&surface.clone(),
|
||||||
canvas_frame,
|
&canvas_frame,
|
||||||
compu_frame);
|
&compu_frame);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => ()
|
_ => ()
|
||||||
|
|||||||
@@ -231,8 +231,8 @@ impl VkProcessor {
|
|||||||
/// Run the VKprocessor for a single frame, consuming the Canvas/Compu Frames
|
/// Run the VKprocessor for a single frame, consuming the Canvas/Compu Frames
|
||||||
pub fn run(&mut self,
|
pub fn run(&mut self,
|
||||||
surface: &Arc<Surface<Window>>,
|
surface: &Arc<Surface<Window>>,
|
||||||
canvas_frame: CanvasFrame,
|
canvas_frame: &CanvasFrame,
|
||||||
compute_frame: CompuFrame,
|
compute_frame: &CompuFrame,
|
||||||
) {
|
) {
|
||||||
{
|
{
|
||||||
let g = hprof::enter("Waiting at queue");
|
let g = hprof::enter("Waiting at queue");
|
||||||
|
|||||||
Reference in New Issue
Block a user