Expose naga span location helpers (#2752)

* Expose the source location in CreateShaderModuleError.

* Bump naga dep to 89bed99.
This commit is contained in:
Nicolas Silva 2022-06-15 05:10:22 +02:00 committed by GitHub
parent 6da57dd4e0
commit 191537021e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 35 additions and 7 deletions

2
Cargo.lock generated
View File

@ -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",

View File

@ -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"]

View File

@ -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))]

View File

@ -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"]

View File

@ -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);

View File

@ -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"]