Automatically derive Pod and Zeroable for structs generated by vulkano-shaders (#2117)

This commit is contained in:
Rua 2022-12-30 10:18:25 +01:00 committed by GitHub
parent daa139dd53
commit 41a37735d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 7 additions and 81 deletions

View File

@ -210,10 +210,5 @@ void main() {
f_color.rgb = push_constants.color.rgb * in_diffuse; f_color.rgb = push_constants.color.rgb * in_diffuse;
f_color.a = 1.0; f_color.a = 1.0;
}", }",
types_meta: {
use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Zeroable, Pod)]
},
} }
} }

View File

@ -235,10 +235,5 @@ void main() {
f_color.rgb = light_percent * push_constants.color.rgb * in_diffuse; f_color.rgb = light_percent * push_constants.color.rgb * in_diffuse;
f_color.a = 1.0; f_color.a = 1.0;
}", }",
types_meta: {
use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Zeroable, Pod)]
},
} }
} }

View File

@ -267,10 +267,5 @@ void main() {
f_color.rgb = push_constants.color.rgb * light_percent * in_diffuse; f_color.rgb = push_constants.color.rgb * light_percent * in_diffuse;
f_color.a = 1.0; f_color.a = 1.0;
}", }",
types_meta: {
use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Zeroable, Pod)]
},
} }
} }

View File

@ -257,10 +257,5 @@ void main() {
); );
imageStore(img, ivec2(gl_GlobalInvocationID.xy), write_color); imageStore(img, ivec2(gl_GlobalInvocationID.xy), write_color);
}", }",
types_meta: {
use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Zeroable, Pod)]
},
} }
} }

View File

@ -265,10 +265,5 @@ void main() {
compute_color(); compute_color();
} }
}", }",
types_meta: {
use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Zeroable, Pod)]
},
} }
} }

View File

@ -113,11 +113,6 @@ fn main() {
} }
} }
", ",
types_meta: {
use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Zeroable, Pod)]
},
} }
} }

View File

@ -177,11 +177,6 @@ fn main() {
" "
} }
}, },
types_meta: {
use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Zeroable, Pod)]
},
} }
// The macro will create the following things in this module: // The macro will create the following things in this module:

View File

@ -262,11 +262,6 @@ fn main() {
verticies[index].vel = vel * exp(friction * push.delta_time); verticies[index].vel = vel * exp(friction * push.delta_time);
} }
", ",
types_meta: {
use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Zeroable, Pod)]
},
} }
} }
// Vertex shader determines color and is run once per particle. // Vertex shader determines color and is run once per particle.

View File

@ -456,11 +456,6 @@ mod vs {
vulkano_shaders::shader! { vulkano_shaders::shader! {
ty: "vertex", ty: "vertex",
path: "src/bin/teapot/vert.glsl", path: "src/bin/teapot/vert.glsl",
types_meta: {
use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Zeroable, Pod)]
},
} }
} }

View File

@ -419,8 +419,6 @@ enum SourceKind {
struct TypesMeta { struct TypesMeta {
custom_derives: Vec<SynPath>, custom_derives: Vec<SynPath>,
clone: bool,
copy: bool,
display: bool, display: bool,
debug: bool, debug: bool,
default: bool, default: bool,
@ -433,9 +431,12 @@ impl Default for TypesMeta {
#[inline] #[inline]
fn default() -> Self { fn default() -> Self {
Self { Self {
custom_derives: vec![], custom_derives: vec![
clone: true, parse_quote! { Clone },
copy: true, parse_quote! { Copy },
parse_quote! { bytemuck::Pod },
parse_quote! { bytemuck::Zeroable },
],
partial_eq: false, partial_eq: false,
debug: false, debug: false,
display: false, display: false,
@ -451,8 +452,6 @@ impl TypesMeta {
fn empty() -> Self { fn empty() -> Self {
Self { Self {
custom_derives: Vec::new(), custom_derives: Vec::new(),
clone: false,
copy: false,
partial_eq: false, partial_eq: false,
debug: false, debug: false,
display: false, display: false,
@ -791,26 +790,6 @@ impl Parse for MacroInput {
path.get_ident() path.get_ident()
{ {
match derive_ident.to_string().as_str() { match derive_ident.to_string().as_str() {
"Clone" => {
if meta.default {
return Err(in_brackets
.error("Duplicate Clone derive"));
}
meta.clone = true;
false
}
"Copy" => {
if meta.copy {
return Err(in_brackets
.error("Duplicate Copy derive"));
}
meta.copy = true;
false
}
"PartialEq" => { "PartialEq" => {
if meta.partial_eq { if meta.partial_eq {
return Err(in_brackets return Err(in_brackets
@ -861,7 +840,7 @@ impl Parse for MacroInput {
if meta if meta
.custom_derives .custom_derives
.iter() .iter()
.any(|candidate| candidate.eq(&path)) .any(|candidate| *candidate == path)
{ {
return Err( return Err(
in_braces.error("Duplicate derive declaration") in_braces.error("Duplicate derive declaration")

View File

@ -220,14 +220,6 @@ fn register_struct(
fn write_derives(types_meta: &TypesMeta) -> TokenStream { fn write_derives(types_meta: &TypesMeta) -> TokenStream {
let mut derives = vec![]; let mut derives = vec![];
if types_meta.clone {
derives.push(quote! { Clone });
}
if types_meta.copy {
derives.push(quote! { Copy });
}
derives.extend( derives.extend(
types_meta types_meta
.custom_derives .custom_derives