moved around the file heirarchy to make these handles safer

This commit is contained in:
2020-02-04 23:02:21 -08:00
parent bb5617420e
commit 8fcd26063a
23 changed files with 163 additions and 127 deletions

View File

@@ -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)>

View File

@@ -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();

View File

@@ -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)]

View File

@@ -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 {

View File

@@ -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],

View 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
}
}

View File

@@ -0,0 +1,5 @@
pub mod compu_buffer;
pub mod compu_sprite;
pub mod compu_kernel;
pub mod handles;

View File

@@ -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;