v0.16.0
Major changes
Shader Changes
type
has been replaced with alias
to match with upstream WebGPU.
- type MyType = vec4<u32>;
+ alias MyType = vec4<u32>;
TextureFormat info API
The TextureFormat::describe
function was removed in favor of separate functions: block_dimensions
, is_compressed
, is_srgb
, required_features
, guaranteed_format_features
, sample_type
and block_size
.
- let block_dimensions = format.describe().block_dimensions;
+ let block_dimensions = format.block_dimensions();
- let is_compressed = format.describe().is_compressed();
+ let is_compressed = format.is_compressed();
- let is_srgb = format.describe().srgb;
+ let is_srgb = format.is_srgb();
- let required_features = format.describe().required_features;
+ let required_features = format.required_features();
Additionally guaranteed_format_features
now takes a set of features to assume are enabled.
- let guaranteed_format_features = format.describe().guaranteed_format_features;
+ let guaranteed_format_features = format.guaranteed_format_features(device.features());
Additionally sample_type
and block_size
now take an optional TextureAspect
and return Option
s.
- let sample_type = format.describe().sample_type;
+ let sample_type = format.sample_type(None).expect("combined depth-stencil format requires specifying a TextureAspect");
- let block_size = format.describe().block_size;
+ let block_size = format.block_size(None).expect("combined depth-stencil format requires specifying a TextureAspect");
BufferUsages::QUERY_RESOLVE
Buffers used as the destination
argument of CommandEncoder::resolve_query_set
now have to contain the QUERY_RESOLVE
usage instead of the COPY_DST
usage.
let destination = device.create_buffer(&wgpu::BufferDescriptor {
// ...
- usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ,
+ usage: wgpu::BufferUsages::QUERY_RESOLVE | wgpu::BufferUsages::MAP_READ,
mapped_at_creation: false,
});
command_encoder.resolve_query_set(&query_set, query_range, &destination, destination_offset);
By @JolifantoBambla in #3489
Renamed features
The following Features
have been renamed.
SHADER_FLOAT16
->SHADER_F16
SHADER_FLOAT64
->SHADER_F64
SHADER_INT16
->SHADER_I16
TEXTURE_COMPRESSION_ASTC_LDR
->TEXTURE_COMPRESSION_ASTC
WRITE_TIMESTAMP_INSIDE_PASSES
->TIMESTAMP_QUERY_INSIDE_PASSES
Anisotropic Filtering
Anisotropic filtering has been brought in line with the spec. The anisotropic clamp is now a u16
(was a Option<u8>
) which must be at least 1.
If the anisotropy clamp is not 1, all the filters in a sampler must be Linear
.
SamplerDescriptor {
- anisotropic_clamp: None,
+ anisotropic_clamp: 1,
}
By @cwfitzgerald in #3610.
TextureFormat Names
Some texture format names have changed to get back in line with the spec.
- TextureFormat::Bc6hRgbSfloat
+ TextureFormat::Bc6hRgbFloat
By @cwfitzgerald in #3671.
Misc Breaking Changes
- Change type of
mip_level_count
andarray_layer_count
(members ofTextureViewDescriptor
andImageSubresourceRange
) fromOption<NonZeroU32>
toOption<u32>
. By @teoxoy in #3445 - Change type of
bytes_per_row
androws_per_image
(members ofImageDataLayout
) fromOption<NonZeroU32>
toOption<u32>
. By @teoxoy in #3529 - On Web,
Instance::create_surface_from_canvas()
andcreate_surface_from_offscreen_canvas()
now take the canvas by value. By @daxpedda in #3690
Changes
General
- Added
TextureFormatFeatureFlags::MULTISAMPLE_X16
. By @Dinnerbone in #3454 - Added
BufferUsages::QUERY_RESOLVE
. By @JolifantoBambla in #3489 - Support stencil-only views and copying to/from combined depth-stencil textures. By @teoxoy in #3436
- Added
Features::SHADER_EARLY_DEPTH_TEST
. By @teoxoy in #3494 - All
fxhash
dependencies have been replaced withrustc-hash
. By @james7132 in #3502 - Allow copying of textures with copy-compatible formats. By @teoxoy in #3528
- Improve attachment related errors. By @cwfitzgerald in #3549
- Make error descriptions all upper case. By @cwfitzgerald in #3549
- Don't include ANSI terminal color escape sequences in shader module validation error messages. By @jimblandy in #3591
- Report error messages from DXC compile. By @Davidster in #3632
- Error in native when using a filterable
TextureSampleType::Float
on a multisampleBindingType::Texture
. By @mockersf in #3686 - On Web, the size of the canvas is adjusted when using
Surface::configure()
. If the canvas was given an explicit size (via CSS), this will not affect the visual size of the canvas. By @daxpedda in #3690
WebGPU
- Implement the new checks for readonly stencils. By @JCapucho in #3443
- Reimplement
adapter|device_features
. By @jinleili in #3428 - Implement
command_encoder_resolve_query_set
. By @JolifantoBambla in #3489 - Add support for
Features::RG11B10UFLOAT_RENDERABLE
. By @mockersf in #3689
Vulkan
- Set
max_memory_allocation_size
viaPhysicalDeviceMaintenance3Properties
. By @jinleili in #3567 - Silence false-positive validation error about surface resizing. By @seabassjh in #3627
Bug Fixes
General
copyTextureToTexture
src/dst aspects must both refer to all aspects of src/dst format. By @teoxoy in #3431- Validate before extracting texture selectors. By @teoxoy in #3487
- Fix fatal errors (those which panic even if an error handler is set) not including all of the details. By @kpreid in #3563
- Validate shader location clashes. By @emilk in #3613
- Fix surfaces not being dropped until exit. By @BenjaminSchaaf in #3647
WebGPU
- Fix handling of
None
values fordepth_ops
andstencil_ops
inRenderPassDescriptor::depth_stencil_attachment
. By @niklaskorz in #3660 - Avoid using
WasmAbi
functions for WebGPU backend. By @grovesNL in #3657
DX12
GLES
- Set FORCE_POINT_SIZE if it is vertex shader with mesh consist of point list. By @REASY in 3440
- Remove unwraps inside
surface.configure
. By @cwfitzgerald in #3585 - Fix
copy_external_image_to_texture
,copy_texture_to_texture
andcopy_buffer_to_texture
not taking the specified index into account if the target texture is a cube map, 2D texture array or cube map array. By @daxpedda #3641 - Fix disabling of vertex attributes with non-consecutive locations. By @Azorlogh in #3706
Metal
- Fix metal erroring on an
array_stride
of 0. By @teoxoy in #3538 create_texture
returns an error ifnew_texture
returns NULL. By @jinleili in #3554- Fix shader bounds checking being ignored. By @FL33TW00D in #3603
Vulkan
- Treat
VK_SUBOPTIMAL_KHR
asVK_SUCCESS
on Android due to rotation issues. By @James2022-rgb in #3525
Examples
- Use
BufferUsages::QUERY_RESOLVE
instead ofBufferUsages::COPY_DST
for buffers used inCommandEncoder::resolve_query_set
calls inmipmap
example. By @JolifantoBambla in #3489