reflect: move naga stuff to naga
This commit is contained in:
parent
6ab3775b23
commit
809c58f34d
|
@ -18,10 +18,14 @@ pub fn compile_spirv(source: &ShaderSource) -> Result<NagaCompilation, ShaderCom
|
|||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use rspirv::binary::Disassemble;
|
||||
use crate::front::naga::compile_spirv;
|
||||
use naga::front::glsl::{Options, Parser};
|
||||
use naga::ShaderStage;
|
||||
|
||||
use naga::back::glsl::{PipelineOptions, Version};
|
||||
use naga::back::spv::{Capability, WriterFlags};
|
||||
use naga::{FastHashSet, ShaderStage};
|
||||
use naga::front::spv::Options as SpvOptions;
|
||||
use naga::valid::{Capabilities, ModuleInfo, ValidationFlags};
|
||||
#[test]
|
||||
pub fn compile_naga_test() {
|
||||
let result = librashader_preprocess::load_shader_source(
|
||||
|
@ -54,10 +58,68 @@ mod test {
|
|||
)
|
||||
.unwrap();
|
||||
let cross = crate::front::shaderc::compile_spirv(&result).unwrap();
|
||||
let naga_fragment = naga::front::spv::parse_u8_slice(cross.fragment.as_binary_u8(), &naga::front::spv::Options::default())
|
||||
let naga_fragment = naga::front::spv::parse_u8_slice(cross.fragment.as_binary_u8(), &SpvOptions::default())
|
||||
.unwrap();
|
||||
println!("{:#?}", naga_fragment.constants);
|
||||
println!("{:#?}", naga_fragment.global_variables);
|
||||
println!("{:#?}", naga_fragment.types);
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn naga_playground() {
|
||||
let result = librashader_preprocess::load_shader_source(
|
||||
"../test/basic.slang",
|
||||
)
|
||||
.unwrap();
|
||||
let spirv = crate::front::shaderc::compile_spirv(&result).unwrap();
|
||||
|
||||
let module = naga::front::spv::parse_u8_slice(spirv.fragment.as_binary_u8(), &SpvOptions::default()).unwrap();
|
||||
|
||||
let capability = FastHashSet::from_iter([Capability::Shader]);
|
||||
let mut writer = naga::back::spv::Writer::new(&naga::back::spv::Options {
|
||||
lang_version: (1, 0),
|
||||
flags: WriterFlags::all(),
|
||||
binding_map: Default::default(),
|
||||
capabilities: Some(capability),
|
||||
bounds_check_policies: Default::default()
|
||||
}).unwrap();
|
||||
|
||||
let mut validator = naga::valid::Validator::new(ValidationFlags::empty(), Capabilities::all());
|
||||
let info = validator.validate(&module).unwrap();
|
||||
let mut out = Vec::new();
|
||||
writer.write(&module, &info, None, &mut out).unwrap();
|
||||
|
||||
let mut glsl_out = String::new();
|
||||
let opts = naga::back::glsl::Options {
|
||||
version: Version::Desktop(330),
|
||||
writer_flags: naga::back::glsl::WriterFlags::all(),
|
||||
binding_map: Default::default()
|
||||
};
|
||||
let pipe = PipelineOptions {
|
||||
shader_stage: ShaderStage::Fragment,
|
||||
entry_point: "main".to_string(),
|
||||
multiview: None
|
||||
};
|
||||
let mut glsl_naga = naga::back::glsl::Writer::new(&mut glsl_out, &module, &info, &opts, &pipe, Default::default()).unwrap();
|
||||
|
||||
glsl_naga.write().unwrap();
|
||||
|
||||
let wgsl = naga::back::wgsl::write_string(&module, &info, naga::back::wgsl::WriterFlags::all()).unwrap();
|
||||
|
||||
let mut loader = rspirv::dr::Loader::new();
|
||||
rspirv::binary::parse_words(&out, &mut loader).unwrap();
|
||||
let module = loader.module();
|
||||
println!("--- spirv --");
|
||||
println!("{:#}", module.disassemble());
|
||||
println!("--- cross glsl --");
|
||||
|
||||
let loaded = spirv_cross::spirv::Module::from_words(&out);
|
||||
let mut ast = spirv_cross::spirv::Ast::<spirv_cross::glsl::Target>::parse(&loaded)
|
||||
.unwrap();
|
||||
println!("{:#}", ast.compile().unwrap());
|
||||
println!("--- naga glsl---");
|
||||
println!("{:#}", glsl_out);
|
||||
println!("--- naga wgsl---");
|
||||
println!("{:#}", wgsl)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -123,14 +123,7 @@ pub fn compile_spirv(source: &ShaderSource) -> Result<GlslangCompilation, Shader
|
|||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use rspirv::binary::Disassemble;
|
||||
use naga::back::glsl::{PipelineOptions, Version};
|
||||
use naga::back::spv::{Capability, WriterFlags};
|
||||
use naga::{FastHashSet, ShaderStage};
|
||||
use naga::front::spv::Options;
|
||||
use naga::valid::{Capabilities, ModuleInfo, ValidationFlags};
|
||||
use crate::front::shaderc::compile_spirv;
|
||||
|
||||
#[test]
|
||||
pub fn compile_shader() {
|
||||
let result = librashader_preprocess::load_shader_source(
|
||||
|
@ -139,66 +132,4 @@ mod test {
|
|||
.unwrap();
|
||||
let spirv = compile_spirv(&result).unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn naga_playground() {
|
||||
let result = librashader_preprocess::load_shader_source(
|
||||
"../test/basic.slang",
|
||||
)
|
||||
.unwrap();
|
||||
let spirv = compile_spirv(&result).unwrap();
|
||||
|
||||
let module = naga::front::spv::parse_u8_slice(spirv.fragment.as_binary_u8(), &Options {
|
||||
adjust_coordinate_space: false,
|
||||
strict_capabilities: false,
|
||||
block_ctx_dump_prefix: None
|
||||
}).unwrap();
|
||||
|
||||
let capability = FastHashSet::from_iter([Capability::Shader]);
|
||||
let mut writer = naga::back::spv::Writer::new(&naga::back::spv::Options {
|
||||
lang_version: (1, 0),
|
||||
flags: WriterFlags::all(),
|
||||
binding_map: Default::default(),
|
||||
capabilities: Some(capability),
|
||||
bounds_check_policies: Default::default()
|
||||
}).unwrap();
|
||||
|
||||
let mut validator = naga::valid::Validator::new(ValidationFlags::empty(), Capabilities::all());
|
||||
let info = validator.validate(&module).unwrap();
|
||||
let mut out = Vec::new();
|
||||
writer.write(&module, &info, None, &mut out).unwrap();
|
||||
|
||||
let mut glsl_out = String::new();
|
||||
let opts = naga::back::glsl::Options {
|
||||
version: Version::Desktop(330),
|
||||
writer_flags: naga::back::glsl::WriterFlags::all(),
|
||||
binding_map: Default::default()
|
||||
};
|
||||
let pipe = PipelineOptions {
|
||||
shader_stage: ShaderStage::Fragment,
|
||||
entry_point: "main".to_string(),
|
||||
multiview: None
|
||||
};
|
||||
let mut glsl_naga = naga::back::glsl::Writer::new(&mut glsl_out, &module, &info, &opts, &pipe, Default::default()).unwrap();
|
||||
|
||||
glsl_naga.write().unwrap();
|
||||
|
||||
let wgsl = naga::back::wgsl::write_string(&module, &info, naga::back::wgsl::WriterFlags::all()).unwrap();
|
||||
|
||||
let mut loader = rspirv::dr::Loader::new();
|
||||
rspirv::binary::parse_words(&out, &mut loader).unwrap();
|
||||
let module = loader.module();
|
||||
println!("--- spirv --");
|
||||
println!("{:#}", module.disassemble());
|
||||
println!("--- cross glsl --");
|
||||
|
||||
let loaded = spirv_cross::spirv::Module::from_words(&out);
|
||||
let mut ast = spirv_cross::spirv::Ast::<spirv_cross::glsl::Target>::parse(&loaded)
|
||||
.unwrap();
|
||||
println!("{:#}", ast.compile().unwrap());
|
||||
println!("--- naga glsl---");
|
||||
println!("{:#}", glsl_out);
|
||||
println!("--- naga wgsl---");
|
||||
println!("{:#}", wgsl)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue