mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-02-16 17:02:32 +00:00
Add validation in accordance with WebGPU GPUSamplerDescriptor
valid… (#3353)
* Add validation in accordance with WebGPU `GPUSamplerDescriptor` valid usage for `lodMinClamp` and `lodMaxClamp`. `lodMinClamp` must not be negative, and `lodMaxClamp` must be >= `lodMinClamp` * Add changelog entry. * Run `cargo fmt`.
This commit is contained in:
parent
c1a0912b64
commit
a06ef71fd7
@ -123,6 +123,7 @@ Additionally `Surface::get_default_config` now returns an Option and returns Non
|
||||
- The `strict_assert` family of macros was moved to `wgpu-types`. By @i509VCB in [#3051](https://github.com/gfx-rs/wgpu/pull/3051)
|
||||
- Add missing `DEPTH_BIAS_CLAMP` and `FULL_DRAW_INDEX_UINT32` downlevel flags. By @teoxoy in [#3316](https://github.com/gfx-rs/wgpu/pull/3316)
|
||||
- Make `ObjectId` structure and invariants idiomatic. By @teoxoy in [#3347](https://github.com/gfx-rs/wgpu/pull/3347)
|
||||
- Add validation in accordance with WebGPU `GPUSamplerDescriptor` valid usage for `lodMinClamp` and `lodMaxClamp`. By @James2022-rgb in [#3353](https://github.com/gfx-rs/wgpu/pull/3353)
|
||||
|
||||
#### WebGPU
|
||||
|
||||
|
@ -1170,6 +1170,12 @@ impl<A: HalApi> Device<A> {
|
||||
self.require_features(wgt::Features::ADDRESS_MODE_CLAMP_TO_ZERO)?;
|
||||
}
|
||||
|
||||
if desc.lod_min_clamp < 0.0 || desc.lod_max_clamp < desc.lod_min_clamp {
|
||||
return Err(resource::CreateSamplerError::InvalidLodClamp(
|
||||
desc.lod_min_clamp..desc.lod_max_clamp,
|
||||
));
|
||||
}
|
||||
|
||||
let lod_clamp = if desc.lod_min_clamp > 0.0 || desc.lod_max_clamp < 32.0 {
|
||||
Some(desc.lod_min_clamp..desc.lod_max_clamp)
|
||||
} else {
|
||||
|
@ -701,6 +701,8 @@ pub struct Sampler<A: hal::Api> {
|
||||
pub enum CreateSamplerError {
|
||||
#[error(transparent)]
|
||||
Device(#[from] DeviceError),
|
||||
#[error("invalid lod clamp lod_min_clamp:{} lod_max_clamp:{}, must satisfy lod_min_clamp >= 0 and lod_max_clamp >= lod_min_clamp ", .0.start, .0.end)]
|
||||
InvalidLodClamp(Range<f32>),
|
||||
#[error("invalid anisotropic clamp {0}, must be one of 1, 2, 4, 8 or 16")]
|
||||
InvalidClamp(u8),
|
||||
#[error("cannot create any more samplers")]
|
||||
|
Loading…
Reference in New Issue
Block a user