mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
Let validation check for more unsupported builtins.
Add `valid::Capabilities` flags for the `ClipDistance` and `CullDistance` builtins, which are not supported by all back ends. Have the CLI perform valation with only those capabilities that the requested back ends support. Fixes #1961.
This commit is contained in:
@@ -135,6 +135,16 @@ impl VaryingContext<'_> {
|
||||
}
|
||||
self.built_ins.insert(canonical);
|
||||
|
||||
let required = match built_in {
|
||||
Bi::ClipDistance => Capabilities::CLIP_DISTANCE,
|
||||
Bi::CullDistance => Capabilities::CULL_DISTANCE,
|
||||
Bi::PrimitiveIndex => Capabilities::PRIMITIVE_INDEX,
|
||||
_ => Capabilities::empty(),
|
||||
};
|
||||
if !self.capabilities.contains(required) {
|
||||
return Err(VaryingError::UnsupportedCapability(required));
|
||||
}
|
||||
|
||||
let width = 4;
|
||||
let (visible, type_good) = match built_in {
|
||||
Bi::BaseInstance | Bi::BaseVertex | Bi::InstanceIndex | Bi::VertexIndex => (
|
||||
@@ -206,21 +216,14 @@ impl VaryingContext<'_> {
|
||||
width: crate::BOOL_WIDTH,
|
||||
},
|
||||
),
|
||||
Bi::PrimitiveIndex => {
|
||||
if !self.capabilities.contains(Capabilities::PRIMITIVE_INDEX) {
|
||||
return Err(VaryingError::UnsupportedCapability(
|
||||
Capabilities::PRIMITIVE_INDEX,
|
||||
));
|
||||
}
|
||||
(
|
||||
self.stage == St::Fragment && !self.output,
|
||||
*ty_inner
|
||||
== Ti::Scalar {
|
||||
kind: Sk::Uint,
|
||||
width,
|
||||
},
|
||||
)
|
||||
}
|
||||
Bi::PrimitiveIndex => (
|
||||
self.stage == St::Fragment && !self.output,
|
||||
*ty_inner
|
||||
== Ti::Scalar {
|
||||
kind: Sk::Uint,
|
||||
width,
|
||||
},
|
||||
),
|
||||
Bi::SampleIndex => (
|
||||
self.stage == St::Fragment && !self.output,
|
||||
*ty_inner
|
||||
|
||||
Reference in New Issue
Block a user