From 9e485bdb1df7cd13d0738b6a57597e92eb431bbd Mon Sep 17 00:00:00 2001 From: Jinlei Li Date: Tue, 29 Nov 2022 14:24:46 +0800 Subject: [PATCH] Set `VIEW_FORMATS` downlevel_flag for test --- wgpu-core/src/device/mod.rs | 14 +++++++++----- wgpu-core/src/resource.rs | 2 ++ wgpu/tests/shader_view_format/mod.rs | 7 +++++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/wgpu-core/src/device/mod.rs b/wgpu-core/src/device/mod.rs index f5e4af90f08..37b2f0f723d 100644 --- a/wgpu-core/src/device/mod.rs +++ b/wgpu-core/src/device/mod.rs @@ -1092,11 +1092,15 @@ impl Device { extent.depth_or_array_layers = view_layer_count; } let format = desc.format.unwrap_or(texture.desc.format); - if format != texture.desc.format && !texture.desc.view_formats.contains(&format) { - return Err(resource::CreateTextureViewError::FormatReinterpretation { - texture: texture.desc.format, - view: format, - }); + if format != texture.desc.format { + if texture.desc.view_formats.contains(&format) { + self.require_downlevel_flags(wgt::DownlevelFlags::VIEW_FORMATS)?; + } else { + return Err(resource::CreateTextureViewError::FormatReinterpretation { + texture: texture.desc.format, + view: format, + }); + } } // filter the usages based on the other criteria diff --git a/wgpu-core/src/resource.rs b/wgpu-core/src/resource.rs index 0c6a792f6c7..2c89f1b8ca7 100644 --- a/wgpu-core/src/resource.rs +++ b/wgpu-core/src/resource.rs @@ -628,6 +628,8 @@ pub enum CreateTextureViewError { texture: wgt::TextureFormat, view: wgt::TextureFormat, }, + #[error(transparent)] + MissingDownlevelFlags(#[from] MissingDownlevelFlags), } #[derive(Clone, Debug, Error)] diff --git a/wgpu/tests/shader_view_format/mod.rs b/wgpu/tests/shader_view_format/mod.rs index 49df0b5df72..f82f8851cfd 100644 --- a/wgpu/tests/shader_view_format/mod.rs +++ b/wgpu/tests/shader_view_format/mod.rs @@ -1,10 +1,13 @@ use crate::common::{image::calc_difference, initialize_test, TestParameters, TestingContext}; use std::num::NonZeroU32; -use wgpu::{util::DeviceExt, TextureFormat}; +use wgpu::{util::DeviceExt, DownlevelFlags, Limits, TextureFormat}; #[test] fn reinterpret_srgb_ness() { - let parameters = TestParameters::default(); + let parameters = TestParameters::default() + .downlevel_flags(DownlevelFlags::VIEW_FORMATS) + .limits(Limits::downlevel_defaults()) + .specific_failure(Some(wgpu::Backends::GL), None, None, true); initialize_test(parameters, |ctx| { let unorm_data: [[u8; 4]; 4] = [ [180, 0, 0, 255],