876: Fix support for d24unorm format r=kvark a=kvark

**Connections**
fixes https://github.com/kvark/vange-rs/pull/121 on some platforms

**Description**
We used to associate `D24Plus` with internal `D24S8`. This results in assuming that it has both DEPTH + STENCIL. Creating a binding from it then fails with the `All` aspect, since you can't view both. This is unexpected, since the user creates `D24Plus` with just a single aspect.

**Testing**
None needed

Co-authored-by: Dzmitry Malyshau <dmalyshau@mozilla.com>
This commit is contained in:
bors[bot] 2020-08-13 21:29:44 +00:00 committed by GitHub
commit 7e8b51b428
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 2 deletions

View File

@ -370,8 +370,8 @@ pub(crate) fn map_texture_format(
// Depth and stencil formats
Tf::Depth32Float => H::D32Sfloat,
Tf::Depth24Plus => {
if private_features.texture_d24_s8 {
H::D24UnormS8Uint
if private_features.texture_d24 {
H::X8D24Unorm
} else {
H::D32Sfloat
}

View File

@ -744,6 +744,10 @@ impl<G: GlobalIdentityHandlerFactory> Global<G> {
let private_features = PrivateFeatures {
shader_validation: desc.shader_validation,
anisotropic_filtering: enabled_features.contains(hal::Features::SAMPLER_ANISOTROPY),
texture_d24: phd
.format_properties(Some(hal::format::Format::X8D24Unorm))
.optimal_tiling
.contains(hal::format::ImageFeature::DEPTH_STENCIL_ATTACHMENT),
texture_d24_s8: phd
.format_properties(Some(hal::format::Format::D24UnormS8Uint))
.optimal_tiling

View File

@ -199,6 +199,7 @@ struct Stored<T> {
struct PrivateFeatures {
shader_validation: bool,
anisotropic_filtering: bool,
texture_d24: bool,
texture_d24_s8: bool,
}