[naga] Ensure validation rejects invalid sample operations of ImageClass::External images. (#8121)

textureSampleBaseClampToEdge() is valid when called on a
`texture_external` texture, but all other sample operations are
invalid. Previously validation was succeeding for these operations on
an external texture in cases where the same operation on a
`texture_2d<f32>` would be allowed. We must therefore explicitly check
for ImageClass::External and disallow invalid sample operations.
This commit is contained in:
Jamie Nicol 2025-08-20 08:30:54 +01:00 committed by GitHub
parent 875250348c
commit 9aaed2c0cc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -590,6 +590,11 @@ impl super::Validator {
}
}
// External textures can only be sampled using clamp_to_edge.
if matches!(class, crate::ImageClass::External) && !clamp_to_edge {
return Err(ExpressionError::InvalidImageClass(class));
}
// check level properties
match level {
crate::SampleLevel::Auto => ShaderStages::FRAGMENT,