mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-02-16 17:02:32 +00:00
Expose naga span location helpers (#2752)
* Expose the source location in CreateShaderModuleError.
* Bump naga dep to 89bed99
.
This commit is contained in:
parent
6da57dd4e0
commit
191537021e
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1032,7 +1032,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "naga"
|
||||
version = "0.8.0"
|
||||
source = "git+https://github.com/gfx-rs/naga?rev=571302e#571302e3ff09cb856f63a3683da308159872b7cc"
|
||||
source = "git+https://github.com/gfx-rs/naga?rev=89bed99#89bed99bcc995bc5068c9c112fd9b7d7896bb148"
|
||||
dependencies = [
|
||||
"bit-set",
|
||||
"bitflags",
|
||||
|
@ -42,7 +42,7 @@ thiserror = "1"
|
||||
|
||||
[dependencies.naga]
|
||||
git = "https://github.com/gfx-rs/naga"
|
||||
rev = "571302e"
|
||||
rev = "89bed99"
|
||||
#version = "0.8"
|
||||
features = ["span", "validate", "wgsl-in"]
|
||||
|
||||
|
@ -126,6 +126,16 @@ pub enum CreateShaderModuleError {
|
||||
MissingFeatures(#[from] MissingFeatures),
|
||||
}
|
||||
|
||||
impl CreateShaderModuleError {
|
||||
pub fn location(&self, source: &str) -> Option<naga::SourceLocation> {
|
||||
match *self {
|
||||
CreateShaderModuleError::Parsing(ref err) => err.inner.location(source),
|
||||
CreateShaderModuleError::Validation(ref err) => err.inner.location(source),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Describes a programmable pipeline stage.
|
||||
#[derive(Clone, Debug)]
|
||||
#[cfg_attr(feature = "trace", derive(serde::Serialize))]
|
||||
|
@ -95,14 +95,14 @@ android-properties = "0.2"
|
||||
|
||||
[dependencies.naga]
|
||||
git = "https://github.com/gfx-rs/naga"
|
||||
rev = "571302e"
|
||||
rev = "89bed99"
|
||||
#version = "0.8"
|
||||
|
||||
# DEV dependencies
|
||||
|
||||
[dev-dependencies.naga]
|
||||
git = "https://github.com/gfx-rs/naga"
|
||||
rev = "571302e"
|
||||
rev = "89bed99"
|
||||
#version = "0.8"
|
||||
features = ["wgsl-in"]
|
||||
|
||||
|
@ -144,6 +144,23 @@ impl super::Device {
|
||||
.position(|ep| ep.name.as_str() == stage.entry_point)
|
||||
.ok_or(crate::PipelineError::EntryPoint(naga_stage))?;
|
||||
|
||||
use naga::proc::BoundsCheckPolicy;
|
||||
// The image bounds checks require the TEXTURE_LEVELS feature available in GL core 1.3+.
|
||||
let version = gl.version();
|
||||
let image_check = if !version.is_embedded && (version.major, version.minor) >= (1, 3) {
|
||||
BoundsCheckPolicy::ReadZeroSkipWrite
|
||||
} else {
|
||||
BoundsCheckPolicy::Unchecked
|
||||
};
|
||||
|
||||
// Other bounds check are either provided by glsl or not implemented yet.
|
||||
let policies = naga::proc::BoundsCheckPolicies {
|
||||
index: BoundsCheckPolicy::Unchecked,
|
||||
buffer: BoundsCheckPolicy::Unchecked,
|
||||
image: image_check,
|
||||
binding_array: BoundsCheckPolicy::Unchecked,
|
||||
};
|
||||
|
||||
let mut output = String::new();
|
||||
let mut writer = glsl::Writer::new(
|
||||
&mut output,
|
||||
@ -151,6 +168,7 @@ impl super::Device {
|
||||
&shader.info,
|
||||
&context.layout.naga_options,
|
||||
&pipeline_options,
|
||||
policies,
|
||||
)
|
||||
.map_err(|e| {
|
||||
let msg = format!("{}", e);
|
||||
|
@ -140,20 +140,20 @@ env_logger = "0.9"
|
||||
|
||||
[dependencies.naga]
|
||||
git = "https://github.com/gfx-rs/naga"
|
||||
rev = "571302e"
|
||||
rev = "89bed99"
|
||||
#version = "0.8"
|
||||
optional = true
|
||||
|
||||
# used to test all the example shaders
|
||||
[dev-dependencies.naga]
|
||||
git = "https://github.com/gfx-rs/naga"
|
||||
rev = "571302e"
|
||||
rev = "89bed99"
|
||||
#version = "0.8"
|
||||
features = ["wgsl-in"]
|
||||
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies.naga]
|
||||
git = "https://github.com/gfx-rs/naga"
|
||||
rev = "571302e"
|
||||
rev = "89bed99"
|
||||
#version = "0.8"
|
||||
features = ["wgsl-out"]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user