dds: Ensure the Extent3d for compressed textures represents the physical size (#5406)

# Objective

- wgpu 0.13 has validation to ensure that the width and height specified for a texture are both multiples of the respective block width and block height. This means validation fails for compressed textures with say a 4x4 block size, but non-modulo-4 image width/height.

## Solution

- Using `Extent3d`'s `physical_size()` method in the `dds` loader. It takes a `TextureFormat` argument and ensures the resolution is correct.

---

## Changelog

- Fixes: Validation failure for compressed textures stored in `dds` where the width/height are not a multiple of the block dimensions.
This commit is contained in:
Robert Swain 2022-07-20 22:43:36 +00:00
parent 4b1f6f4ebb
commit 1c23421f41

View file

@ -27,7 +27,8 @@ pub fn dds_buffer_to_image(
} else {
dds.get_depth()
},
};
}
.physical_size(texture_format);
image.texture_descriptor.mip_level_count = dds.get_num_mipmap_levels();
image.texture_descriptor.format = texture_format;
image.texture_descriptor.dimension = if dds.get_depth() > 1 {