moved around the file heirarchy to make these handles safer
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
use crate::canvas::canvas_state::{Drawable};
|
||||
use std::sync::Arc;
|
||||
use crate::compute::compu_sprite::CompuSprite;
|
||||
use crate::compute::compu_kernel::{CompuKernel, CompuKernelHandle};
|
||||
use crate::compute::compu_buffer::{CompuBuffers};
|
||||
use crate::canvas::{CompuBufferHandle, CanvasImageHandle};
|
||||
use crate::canvas::managed::handles::{CanvasImageHandle};
|
||||
use crate::compute::managed::handles::{CompuKernelHandle, CompuBufferHandle};
|
||||
use crate::compute::managed::compu_sprite::CompuSprite;
|
||||
|
||||
pub struct CompuFrame {
|
||||
// Vec<(Buffer, Kernel)>
|
||||
|
||||
@@ -18,10 +18,11 @@ use std::path::PathBuf;
|
||||
use shade_runner::{CompiledShaders, Entry, CompileError};
|
||||
use vulkano::pipeline::shader::ShaderModule;
|
||||
use shaderc::CompileOptions;
|
||||
use crate::compute::compu_kernel::{CompuKernel, CompuKernelHandle};
|
||||
use crate::compute::compu_buffer::{CompuBuffers};
|
||||
use crate::compute::compu_frame::CompuFrame;
|
||||
use crate::canvas::CompuBufferHandle;
|
||||
use crate::canvas::managed::handles::Handle;
|
||||
use crate::compute::managed::compu_buffer::CompuBuffers;
|
||||
use crate::compute::managed::handles::{CompuKernelHandle, CompuBufferHandle};
|
||||
use crate::compute::managed::compu_kernel::CompuKernel;
|
||||
|
||||
|
||||
/// State holding the compute buffers for computation and the kernels which will compute them
|
||||
@@ -98,8 +99,8 @@ impl CompuState {
|
||||
|
||||
// i = (Buffer, Kernel)
|
||||
for i in compute_frame.pure_compute {
|
||||
let buffer_id = (*i.0).clone().handle as usize;
|
||||
let kernel_id = (*i.1).clone().handle as usize;
|
||||
let buffer_id = (*i.0).clone().get_handle() as usize;
|
||||
let kernel_id = (*i.1).clone().get_handle() as usize;
|
||||
|
||||
let buffer = self.compute_buffers.get(buffer_id).unwrap();
|
||||
let kernel = self.kernels.get(kernel_id).unwrap();
|
||||
@@ -115,7 +116,7 @@ impl CompuState {
|
||||
|
||||
// i = (Buffer, Image, Kernel)
|
||||
for i in compute_frame.swapped_to_image {
|
||||
let buffer_id = (*i.0).clone().handle as usize;
|
||||
let buffer_id = (*i.0).clone().get_handle() as usize;
|
||||
let image_id = i.1.clone();
|
||||
let kernel_id = (*i.2).clone().handle as usize;
|
||||
|
||||
@@ -143,8 +144,8 @@ impl CompuState {
|
||||
// i = (Input Buffer, Output Buffer, Kernel)
|
||||
// Input buffer -> Kernel -> Output buffer
|
||||
for i in compute_frame.swapped_to_buffer {
|
||||
let input_buffer_id = (*i.0).clone().handle as usize;
|
||||
let output_buffer_id = (*i.1).clone().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 kernel_id = (*i.2).clone().handle as usize;
|
||||
|
||||
let input_buffer = self.compute_buffers.get(input_buffer_id).unwrap();
|
||||
|
||||
@@ -7,7 +7,7 @@ use vulkano::descriptor::descriptor_set::{PersistentDescriptorSet, PersistentDes
|
||||
use image::ImageBuffer;
|
||||
use image::Rgba;
|
||||
use shade_runner::Layout;
|
||||
use crate::canvas::CompuBufferHandle;
|
||||
use crate::compute::managed::handles::CompuBufferHandle;
|
||||
|
||||
|
||||
#[derive(Clone)]
|
||||
@@ -8,12 +8,8 @@ use vulkano::descriptor::pipeline_layout::PipelineLayout;
|
||||
use shade_runner::{CompileError, Layout, Input, Output, CompiledShaders, Entry, CompiledShader};
|
||||
use shaderc::CompileOptions;
|
||||
use vulkano::pipeline::shader::{ShaderModule, GraphicsEntryPoint, SpecializationConstants, SpecializationMapEntry};
|
||||
use crate::compute::compu_buffer::{CompuBuffers};
|
||||
use crate::compute::managed::handles::CompuKernelHandle;
|
||||
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
|
||||
pub struct CompuKernelHandle {
|
||||
pub handle: u32,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct CompuKernel {
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::canvas::canvas_state::{Drawable};
|
||||
use std::sync::Arc;
|
||||
use crate::canvas::{CanvasImageHandle, CanvasTextureHandle};
|
||||
use crate::canvas::managed::handles::{CanvasImageHandle, CanvasTextureHandle};
|
||||
|
||||
pub struct CompuSprite {
|
||||
pub vertices: [(f32, f32, f32); 6],
|
||||
29
src/compute/managed/handles.rs
Normal file
29
src/compute/managed/handles.rs
Normal file
@@ -0,0 +1,29 @@
|
||||
use crate::canvas::managed::handles::Handle;
|
||||
|
||||
/// Typed wrapper for a u32 handle
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
|
||||
pub struct CompuBufferHandle {
|
||||
pub(in crate::compute) handle: u32,
|
||||
}
|
||||
|
||||
impl Handle for CompuBufferHandle {
|
||||
fn get_handle(&self) -> u32 {
|
||||
self.handle
|
||||
}
|
||||
}
|
||||
|
||||
/// Typed wrapper for a u32 handle
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
|
||||
pub struct CompuKernelHandle {
|
||||
pub(in crate::compute) handle: u32,
|
||||
}
|
||||
|
||||
impl Handle for CompuKernelHandle {
|
||||
fn get_handle(&self) -> u32 {
|
||||
self.handle
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
5
src/compute/managed/mod.rs
Normal file
5
src/compute/managed/mod.rs
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
pub mod compu_buffer;
|
||||
pub mod compu_sprite;
|
||||
pub mod compu_kernel;
|
||||
pub mod handles;
|
||||
@@ -1,11 +1,6 @@
|
||||
pub mod compu_frame;
|
||||
pub mod compu_kernel;
|
||||
pub mod compu_sprite;
|
||||
pub mod compu_state;
|
||||
pub mod compu_buffer;
|
||||
pub mod managed;
|
||||
|
||||
use crate::compute::compu_state::CompuState;
|
||||
use crate::compute::compu_frame::CompuFrame;
|
||||
use crate::compute::compu_sprite::CompuSprite;
|
||||
use crate::compute::compu_kernel::CompuKernel;
|
||||
use crate::compute::compu_buffer::CompuBuffers;
|
||||
use crate::compute::compu_frame::CompuFrame;
|
||||
Reference in New Issue
Block a user