mirror of
https://github.com/EmbarkStudios/rust-gpu.git
synced 2024-11-22 06:45:13 +00:00
Added SpirvBuilder API to set extra codegen arguments
This commit is contained in:
parent
31660ac63c
commit
17ff16f645
@ -159,6 +159,7 @@ pub struct SpirvBuilder {
|
|||||||
spirv_metadata: SpirvMetadata,
|
spirv_metadata: SpirvMetadata,
|
||||||
capabilities: Vec<Capability>,
|
capabilities: Vec<Capability>,
|
||||||
extensions: Vec<String>,
|
extensions: Vec<String>,
|
||||||
|
extra_args: Vec<String>,
|
||||||
|
|
||||||
// spirv-val flags
|
// spirv-val flags
|
||||||
pub relax_struct_store: bool,
|
pub relax_struct_store: bool,
|
||||||
@ -184,6 +185,7 @@ impl SpirvBuilder {
|
|||||||
spirv_metadata: SpirvMetadata::None,
|
spirv_metadata: SpirvMetadata::None,
|
||||||
capabilities: Vec::new(),
|
capabilities: Vec::new(),
|
||||||
extensions: Vec::new(),
|
extensions: Vec::new(),
|
||||||
|
extra_args: Vec::new(),
|
||||||
|
|
||||||
relax_struct_store: false,
|
relax_struct_store: false,
|
||||||
relax_logical_pointer: false,
|
relax_logical_pointer: false,
|
||||||
@ -304,6 +306,14 @@ impl SpirvBuilder {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Set additional "codegen arg". Note: the `RUSTGPU_CODEGEN_ARGS` environment variable
|
||||||
|
/// takes precedence over any set arguments using this function.
|
||||||
|
#[must_use]
|
||||||
|
pub fn extra_arg(mut self, arg: impl Into<String>) -> Self {
|
||||||
|
self.extra_args.push(arg.into());
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
/// Builds the module. If `print_metadata` is [`MetadataPrintout::Full`], you usually don't have to inspect the path
|
/// Builds the module. If `print_metadata` is [`MetadataPrintout::Full`], you usually don't have to inspect the path
|
||||||
/// in the result, as the environment variable for the path to the module will already be set.
|
/// in the result, as the environment variable for the path to the module will already be set.
|
||||||
pub fn build(mut self) -> Result<CompileResult, SpirvBuilderError> {
|
pub fn build(mut self) -> Result<CompileResult, SpirvBuilderError> {
|
||||||
@ -475,6 +485,8 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result<PathBuf, SpirvBuilderError> {
|
|||||||
|
|
||||||
if let Ok(extra_codegen_args) = tracked_env_var_get("RUSTGPU_CODEGEN_ARGS") {
|
if let Ok(extra_codegen_args) = tracked_env_var_get("RUSTGPU_CODEGEN_ARGS") {
|
||||||
llvm_args.extend(extra_codegen_args.split_whitespace().map(|s| s.to_string()));
|
llvm_args.extend(extra_codegen_args.split_whitespace().map(|s| s.to_string()));
|
||||||
|
} else {
|
||||||
|
llvm_args.extend(builder.extra_args.iter().cloned());
|
||||||
}
|
}
|
||||||
|
|
||||||
let llvm_args = join_checking_for_separators(llvm_args, " ");
|
let llvm_args = join_checking_for_separators(llvm_args, " ");
|
||||||
|
Loading…
Reference in New Issue
Block a user