Add glsl handling to convert sample (#69)

* Add glsl handling to convert sample

- Also fis extension check for spv and wgsl (missing .)

* Use std::path::Path for ext handling

* Also fix ext for .comp

Missing from last commit
This commit is contained in:
Pelle Johnsen
2020-06-17 15:34:35 +02:00
committed by GitHub
parent 8e0ae1cf06
commit ba0798e5d1

View File

@@ -1,5 +1,5 @@
use serde::{Deserialize, Serialize};
use std::{env, fs};
use std::{env, fs, path::Path};
#[derive(Hash, PartialEq, Eq, Serialize, Deserialize)]
struct BindSource {
@@ -29,8 +29,12 @@ fn main() {
println!("Call with <input> <output>");
return;
}
let in_ext_pos = args[1].rfind(".").expect("Input has no extension?");
let module = match &args[1][in_ext_pos..] {
let ext = Path::new(&args[1])
.extension()
.expect("Input has no extension?")
.to_str()
.unwrap();
let module = match ext {
"spv" => {
let input = fs::read(&args[1]).unwrap();
naga::front::spv::parse_u8_slice(&input).unwrap()
@@ -39,8 +43,32 @@ fn main() {
let input = fs::read_to_string(&args[1]).unwrap();
naga::front::wgsl::parse_str(&input).unwrap()
}
//#[cfg(feature = "glsl")] //TODO
//"glsl" | "vert" | "frag" | "comp" => {}
#[cfg(feature = "glsl")]
"vert" => {
let input = fs::read_to_string(&args[1]).unwrap();
naga::front::glsl::parse_str(&input, "main".to_string(), spirv::ExecutionModel::Vertex)
.unwrap()
}
#[cfg(feature = "glsl")]
"frag" => {
let input = fs::read_to_string(&args[1]).unwrap();
naga::front::glsl::parse_str(
&input,
"main".to_string(),
spirv::ExecutionModel::Fragment,
)
.unwrap()
}
#[cfg(feature = "glsl")]
"comp" => {
let input = fs::read_to_string(&args[1]).unwrap();
naga::front::glsl::parse_str(
&input,
"main".to_string(),
spirv::ExecutionModel::GLCompute,
)
.unwrap()
}
other => panic!("Unknown input extension: {}", other),
};