NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4404 most downloaded on crates.io
Low level D3D12 API wrapper
Last release 2 years ago
no release in 18 months
Ships fairly regularly
a new release about every 6 months
Most releases are documented
notes for 11 of 13 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
13 releases · first in 2018
We are often concerned with tracking breaking changes, and affecting these consumers' ability to ship. By releasing our first major version, we public…
For the first time ever, wgpu is being released with a major version (i.e., 22.* instead of 0.22.*)! Maintainership has decided to fully adhere to Semantic Versioning's recommendations for versioning production software. According to SemVer 2.0.0's Q&A about when to use 1.0.0 versions (and beyond):
How do I know when to release 1.0.0?
If your software is being used in production, it should probably already be 1.0.0. If you have a stable API on which users have come to depend, you should be 1.0.0. If you’re worrying a lot about backward compatibility, you should probably already be 1.0.0.
It is a well-known fact that wgpu has been used for applications and platforms already in production for years, at this point. We are often concerned with tracking breaking changes, and affecting these consumers' ability to ship. By releasing our first major version, we publicly acknowledge that this is the case. We encourage other projects in the Rust ecosystem to follow suit.
Note that while we start to use the major version number, wgpu is not "going stable", as many Rust projects do. We anticipate many breaking changes before we fully comply with the WebGPU spec., which we expect to take a small number of years.
A major (pun intended) theme of this release is incremental improvement. Among the typically large set of bug fixes, new features, and other adjustments to wgpu by the many contributors listed below, @wumpf and @teoxoy have merged a series of many simplifications to wgpu's internals and, in one case, to the render and compute pass recording APIs. Many of these change wgpu to use atomically reference-counted resource tracking (i.e., Arc<…>), rather than using IDs to manage the lifetimes of platform-specific graphics resources in a registry of separate reference counts. This has led us to diagnose and fix many long-standing bugs, and net some neat performance improvements on the order of 40% or more of some workloads.
While the above is exciting, we acknowledge already finding and fixing some (easy-to-fix) regressions from the above work. If you migrate to wgpu 22 and encounter such bugs, please engage us in the issue tracker right away!
wgpu::RenderPass & wgpu::ComputePasswgpu::RenderPass & wgpu::ComputePass recording methods (e.g. wgpu::RenderPass:set_render_pipeline) no longer impose a lifetime constraint to objects passed to a pass (like pipelines/buffers/bindgroups/query-sets etc.).
This means the following pattern works now as expected:
let mut pipelines: Vec<wgpu::RenderPipeline> = ...;
// ...
let mut cpass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor::default());
cpass.set_pipeline(&pipelines[123]);
// Change pipeline container - this requires mutable access to `pipelines` while one of the pipelines is in use.
pipelines.push(/* ... */);
// Continue pass recording.
cpass.set_bindgroup(...);
Previously, a set pipeline (or other resource) had to outlive pass recording which often affected wider systems,
meaning that users needed to prove to the borrow checker that Vec<wgpu::RenderPipeline> (or similar constructs)
aren't accessed mutably for the duration of pass recording.
Furthermore, you can now opt out of wgpu::RenderPass/wgpu::ComputePass's lifetime dependency on its parent wgpu::CommandEncoder using wgpu::RenderPass::forget_lifetime/wgpu::ComputePass::forget_lifetime:
fn independent_cpass<'enc>(encoder: &'enc mut wgpu::CommandEncoder) -> wgpu::ComputePass<'static> {
let cpass: wgpu::ComputePass<'enc> = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor::default());
cpass.forget_lifetime()
}
⚠️ As long as a wgpu::RenderPass/wgpu::ComputePass is pending for a given wgpu::CommandEncoder, creation of a compute or render pass is an error and invalidates the wgpu::CommandEncoder.
forget_lifetime can be very useful for library authors, but opens up an easy way for incorrect use, so use with care.
This method doesn't add any additional overhead and has no side effects on pass recording.
By @wumpf in #5569, #5575, #5620, #5768 (together with @kpreid), #5671, #5794, #5884.
Wgpu now supports querying shader compilation info.
This allows you to get more structured information about compilation errors, warnings and info:
...
let lighting_shader = ctx.device.create_shader_module(include_wgsl!("lighting.wgsl"));
let compilation_info = lighting_shader.get_compilation_info().await;
for message in compilation_info
.messages
.iter()
.filter(|m| m.message_type == wgpu::CompilationMessageType::Error)
{
let line = message.location.map(|l| l.line_number).unwrap_or(1);
println!("Compile error at line {line}");
}
By @stefnotch in #5410
Add support for 64 bit integer atomic operations in shaders.
Add the following flags to wgpu_types::Features:
SHADER_INT64_ATOMIC_ALL_OPS enables all atomic operations on atomic<i64> and
atomic<u64> values.
SHADER_INT64_ATOMIC_MIN_MAX is a subset of the above, enabling only
AtomicFunction::Min and AtomicFunction::Max operations on atomic<i64> and
atomic<u64> values in the Storage address space. These are the only 64-bit
atomic operations available on Metal as of 3.1.
Add corresponding flags to naga::valid::Capabilities. These are supported by the
WGSL front end, and all naga backends.
Platform support:
On Direct3d 12, in D3D12_FEATURE_DATA_D3D12_OPTIONS9, if
AtomicInt64OnTypedResourceSupported and AtomicInt64OnGroupSharedSupported are
both available, then both wgpu features described above are available.
On Metal, SHADER_INT64_ATOMIC_MIN_MAX is available on Apple9 hardware, and on
hardware that advertises both Apple8 and Mac2 support. This also requires Metal
Shading Language 2.4 or later. Metal does not yet support the more general
SHADER_INT64_ATOMIC_ALL_OPS.
On Vulkan, if the VK_KHR_shader_atomic_int64 extension is available with both the
shader_buffer_int64_atomics and shader_shared_int64_atomics features, then both
wgpu features described above are available.
By @atlv24 in #5383
request_adapter() on WebGL2 + enumerate_adapters() is now native only.When targeting WebGL2, it has always been the case that a surface had to be created before calling request_adapter().
We now make this requirement explicit.
Validation was also added to prevent configuring the surface with a device that doesn't share the same underlying WebGL2 context since this has never worked.
Calling enumerate_adapters() when targeting WebGPU used to return an empty Vec and since we now require users
to pass a compatible surface when targeting WebGL2, having enumerate_adapters() doesn't make sense.
By @teoxoy in #5901
as_hal for Buffer to access wgpu created buffers form wgpu-hal. By @JasondeWolff in #5724include_wgsl! is now callable in const contexts by @9SMTM6 in #5872DeviceDescriptor by @nical in #5875
MemoryHints::Performance, the default, favors performance over memory usage and will likely cause large amounts of VRAM to be allocated up-front. This hint is typically good for games.MemoryHints::MemoryUsage favors memory usage over performance. This hint is typically useful for smaller applications or UI libraries.MemoryHints::Manual allows the user to specify parameters for the underlying GPU memory allocator. These parameters are subject to change.HTMLImageElement and ImageData as external source for copying images. By @Valaphee in #5668Added -D, --defines option to naga CLI to define preprocessor macros by @theomonnom in #5859
Added type upgrades to SPIR-V atomic support. Added related infrastructure. Tracking issue is here. By @schell in #5775.
Implement WGSL's unpack4xI8,unpack4xU8,pack4xI8 and pack4xU8. By @VlaDexa in #5424
Began work adding support for atomics to the SPIR-V frontend. Tracking issue is here. By @schell in #5702.
In hlsl-out, allow passing information about the fragment entry point to omit vertex outputs that are not in the fragment inputs. By @Imberflur in #5531
In spv-out, allow passing acceleration_structure as a function argument. By @kvark in #5961
let writer: naga::back::hlsl::Writer = /* ... */;
-writer.write(&module, &module_info);
+writer.write(&module, &module_info, None);
HLSL & MSL output can now be added conditionally on the target via the msl-out-if-target-apple and hlsl-out-if-target-windows features. This is used in wgpu-hal to no longer compile with MSL output when metal is enabled & MacOS isn't targeted and no longer compile with HLSL output when dx12 is enabled & Windows isn't targeted. By @wumpf in #5919
PipelineCache resource to allow using Vulkan pipeline caches. By @DJMcNab in #5319StageError::InputNotConsumed, Features::SHADER_UNUSED_VERTEX_OUTPUT, and associated validation. By @Imberflur in #5531wgpu::Error is now Sync, making it possible to be wrapped in anyhow::Error or eyre::Report. By @nolanderc in #5820.submit() by 39-64% (.submit() + .poll() by 22-32%). By @teoxoy in #5910trace wgpu feature has been temporarily removed. By @teoxoy in #5975Removed the link Cargo feature.
This was used to allow weakly linking frameworks. This can be achieved with putting something like the following in your .cargo/config.toml instead:
[target.'cfg(target_vendor = "apple")']
rustflags = ["-C", "link-args=-weak_framework Metal -weak_framework QuartzCore -weak_framework CoreGraphics"]
By @madsmtm in #5752
wgpu::ComputePass now internally takes ownership of QuerySet for both wgpu::ComputePassTimestampWrites as well as timestamp writes and statistics query, fixing crashes when destroying QuerySet before ending the pass. By @wumpf in #5671queue_write_texture (causing UB). By @teoxoy in #5973ClearColorF, ClearColorU and ClearColorI commands being issued before SetDrawColorBuffers #5666glClear with glClearBufferF because glDrawBuffers requires that the ith buffer must be COLOR_ATTACHMENTi or NONE #5666One column per quarter.
Breaking change: `wgpu_core::ProgrammableStageDescriptor is now optional. By @ErichDonGubler in #5305.
Wgpu supports now pipeline-overridable constants
This allows you to define constants in wgsl like this:
override some_factor: f32 = 42.1337; // Specifies a default of 42.1337 if it's not set.
And then set them at runtime like so on your pipeline consuming this shader:
// ...
fragment: Some(wgpu::FragmentState {
compilation_options: wgpu::PipelineCompilationOptions {
constants: &[("some_factor".to_owned(), 0.1234)].into(), // Sets `some_factor` to 0.1234.
..Default::default()
},
// ...
}),
// ...
By @teoxoy & @jimblandy in #5500
Due to a specification change write_timestamp is no longer supported on WebGPU.
wgpu::CommandEncoder::write_timestamp requires now the new wgpu::Features::TIMESTAMP_QUERY_INSIDE_ENCODERS feature which is available on all native backends but not on WebGPU.
By @wumpf in #5188
Many numeric built-ins have had a constant evaluation implementation added for them, which allows them to be used in a const context:
abs, acos, acosh, asin, asinh, atan, atanh, cos, cosh, round, saturate, sin, sinh, sqrt, step, tan, tanh, ceil, countLeadingZeros, countOneBits, countTrailingZeros, degrees, exp, exp2, floor, fract, fma, inverseSqrt, log, log2, max, min, radians, reverseBits, sign, trunc
By @ErichDonGubler in #4879, #5098
The following subgroup operations are available in wgsl now:
subgroupBallot, subgroupAll, subgroupAny, subgroupAdd, subgroupMul, subgroupMin, subgroupMax, subgroupAnd, subgroupOr, subgroupXor, subgroupExclusiveAdd, subgroupExclusiveMul, subgroupInclusiveAdd, subgroupInclusiveMul, subgroupBroadcastFirst, subgroupBroadcast, subgroupShuffle, subgroupShuffleDown, subgroupShuffleUp, subgroupShuffleXor
Availability is governed by the following feature flags:
wgpu::Features::SUBGROUP for all operations except subgroupBarrier in fragment & compute, supported on Vulkan, DX12 and Metal.wgpu::Features::SUBGROUP_VERTEX, for all operations except subgroupBarrier general operations in vertex shaders, supported on Vulkanwgpu::Features::SUBGROUP_BARRIER, for support of the subgroupBarrier operation, supported on Vulkan & MetalNote that there currently some differences between wgpu's native-only implementation and the open WebGPU proposal.
By @exrook and @lichtso in #5301
wgpu::Features::SHADER_INT64 enables 64 bit integer signed and unsigned integer variables in wgsl (i64 and u64 respectively).
Supported on Vulkan, DX12 (requires DXC) and Metal (with MSL 2.3+ support).
By @atlv24 and @cwfitzgerald in #5154
Unorm10_10_10_2 VertexFormat by @McMackety in #5477wgpu-types's trace and replay features have been replaced by the serde feature. By @KirmesBude in #5149wgpu-core's serial-pass feature has been removed. Use serde instead. By @KirmesBude in #5149InstanceFlags::GPU_BASED_VALIDATION, which enables GPU-based validation for shaders. This is currently only supported on the DX12 and Vulkan backends; other platforms ignore this flag, for now. By @ErichDonGubler in #5146, #5046.
InstanceFlags::VALIDATION.InstanceFlags::advanced_debugging. Since the overhead is potentially very large, the flag is not enabled by default in debug builds when using InstanceFlags::from_build_config.InstanceFlags::with_env with the new WGPU_GPU_BASED_VALIDATION environment variable.wgpu::Instance can now report which wgpu::Backends are available based on the build configuration. By @wumpf #5167-wgpu::Instance::any_backend_feature_enabled()
+!wgpu::Instance::enabled_backend_features().is_empty()
wgpu_core::pipeline::ProgrammableStageDescriptor is now optional. By @ErichDonGubler in #5305.Features::downlevel{_webgl2,}_features was made const by @MultisampledNight in #5343wgpu_core::pipeline::ShaderError has been moved to naga. By @stefnotch in #5410wgpu::CommandEncoder::as_hal_mutwgpu::TextureView::as_halwgpu::Texture::as_hal now returns a user-defined type to match the other as_hal functions--metal-version with naga CLI. By @pcleavelin in #5392arrayLength for runtime-sized arrays inside binding arrays (for WGSL input and SPIR-V output). By @kvark in #5428--shader-stage and --input-kind options to naga-cli for specifying vertex/fragment/compute shaders, and frontend. by @ratmice in #5411create_validator function to wgpu_core Device to create naga Validators. By @atlv24 #5606device_set_device_lost_callback method for ContextWebGpu. By @suti in #5438ReadOnly and ReadWrite. By @JolifantoBambla in #5434get_texture_format_features cheap. By @Dinnerbone in #5346DEPTH32FLOAT_STENCIL8 as supported in GLES. By @Dinnerbone in #5370TEXTURE_COMPRESSION_ETC2. By @Valaphee in #5568driver and driver_info, with the OpenGL flavor and version, similar to Vulkan. By @valaphee in #5482wgpu_hal documentation. By @jimblandy in #5516, #5524, #5562, #5563, #5566, #5617, #5618PrimitiveState::strip_index_format. By @cpsdqs in #5350SourceLocation. By @stefnotch in #5386 and #5410push_constant syntax. By @waywardmonkeys in #5393Limits::max_compute_workgroup_storage_size default value. By @atlv24 in #5601serde feature not compiling for wgpu-types. By @KirmesBude in #5149storage and uniform vars. By @jimblandy #5222extern "C" + [no_mangle]) from RenderPass & ComputePass recording. By @wumpf in #5409.Expression::ZeroValue. By @Imberflur in #5587.extractBits and insertBits when offset + count overflows the bit width. By @cwfitzgerald in #5305clamp when min argument > max argument. By @cwfitzgerald in #5300.TypeInner::scalar_width to be consistent with the rest of the codebase and return values in bytes not bits. By @atlv24 in #5532.first_instance getting ignored in draw indexed when ARB_shader_draw_parameters feature is present and base_vertex is 0. By @valaphee in #5482wgpu_hal::vulkan::CommandEncoder to make sure discard_encoding is not called in the closed state. By @villuna in #5557LocalType caching. By @atlv24 in #5590ash to 0.38. By @MarijnS95 in #5504.multithreaded_compute test. By @jimblandy in #5129.TextureFormat::block_size is deprecated, use TextureFormat::block_copy_size instead: By @wumpf in #4647.
This release includes:
wgpuwgpu-corewgpu-halwgpu-typeswgpu-infonaga (skipped from 0.14 to 0.19)naga-cli (skipped from 0.14 to 0.19)d3d12 (skipped from 0.7 to 0.19)Large refactoring of wgpu’s internals aiming at reducing lock contention, and providing better performance when using wgpu on multiple threads.
By @gents83 in #3626 and thanks also to @jimblandy, @nical, @Wumpf, @Elabajaba & @cwfitzgerald
All of wgpu's public dependencies are now re-exported at the top level so that users don't need to take their own dependencies. This includes:
Enabling webgl no longer removes the webgpu backend.
Instead, there's a new (default enabled) webgpu feature that allows to explicitly opt-out of webgpu if so desired.
If both webgl & webgpu are enabled, wgpu::Instance decides upon creation whether to target wgpu-core/WebGL or WebGPU.
This means that adapter selection is not handled as with regular adapters, but still allows to decide at runtime whether
webgpu or the webgl backend should be used using a single wasm binary.
By @wumpf in #5044
naga-ir Dedicated FeatureThe naga-ir feature has been added to allow you to add naga module shaders without guessing about what other features needed to be enabled to get access to it.
By @cwfitzgerald in #5063.
expose-ids Feature available unconditionallyThis feature allowed you to call global_id on any wgpu opaque handle to get a unique hashable identity for the given resource. This is now available without the feature flag.
By @cwfitzgerald in #4841.
dx12 and metal Backend Crate Featureswgpu now exposes backend feature for the Direct3D 12 (dx12) and Metal (metal) backend. These are enabled by default, but don't do anything when not targeting the corresponding OS.
By @daxpedda in #4815.
This backend had no functionality, and with the recent support for GL on Desktop, which allows wgpu to run on older devices, there was no need to keep this backend. By @valaphee in #4828.
WGPU_ALLOW_UNDERLYING_NONCOMPLIANT_ADAPTER Environment VariableThis adds a way to allow a Vulkan driver which is non-compliant per VK_KHR_driver_properties to be enumerated. This is intended for testing new Vulkan drivers which are not Vulkan compliant yet.
By @i509VCB in #4754.
DeviceExt::create_texture_with_data allows Mip-Major DataPreviously, DeviceExt::create_texture_with_data only allowed data to be provided in layer major order. There is now a order parameter which allows you to specify if the data is in layer major or mip major order.
let tex = ctx.device.create_texture_with_data(
&queue,
&descriptor,
+ wgpu::util::TextureDataOrder::LayerMajor,
src_data,
);
By @cwfitzgerald in #4780.
It is now possible to safely create a wgpu::Surface with wgpu::Instance::create_surface() by letting wgpu::Surface hold a lifetime to window.
Passing an owned value window to Surface will return a wgpu::Surface<'static>.
All possible safe variants (owned windows and web canvases) are grouped using wgpu::SurfaceTarget.
Conversion to wgpu::SurfaceTarget is automatic for any type implementing raw-window-handle's HasWindowHandle & HasDisplayHandle traits, i.e. most window types.
For web canvas types this has to be done explicitly:
let surface: wgpu::Surface<'static> = instance.create_surface(wgpu::SurfaceTarget::Canvas(my_canvas))?;
All unsafe variants are now grouped under wgpu::Instance::create_surface_unsafe which takes the
wgpu::SurfaceTargetUnsafe enum and always returns wgpu::Surface<'static>.
In order to create a wgpu::Surface<'static> without passing ownership of the window use
wgpu::SurfaceTargetUnsafe::from_window:
let surface = unsafe {
instance.create_surface_unsafe(wgpu::SurfaceTargetUnsafe::from_window(&my_window))?
};
The easiest way to make this code safe is to use shared ownership:
let window: Arc<winit::Window>;
// ...
let surface = instance.create_surface(window.clone())?;
All platform specific surface creation using points have moved into SurfaceTargetUnsafe as well.
For example:
Safety by @daxpedda in #4597 Unification by @wumpf in #4984
Abstract types make numeric literals easier to use, by automatically converting literals and other constant expressions from abstract numeric types to concrete types when safe and necessary. For example, to build a vector of floating-point numbers, naga previously made you write:
vec3<f32>(1.0, 2.0, 3.0)
With this change, you can now simply write:
vec3<f32>(1, 2, 3)
Even though the literals are abstract integers, naga recognizes
that it is safe and necessary to convert them to f32 values in
order to build the vector. You can also use abstract values as
initializers for global constants and global and local variables,
like this:
var unit_x: vec2<f32> = vec2(1, 0);
The literals 1 and 0 are abstract integers, and the expression
vec2(1, 0) is an abstract vector. However, naga recognizes that
it can convert that to the concrete type vec2<f32> to satisfy
the given type of unit_x.
The WGSL specification permits abstract integers and
floating-point values in almost all contexts, but naga's support
for this is still incomplete. Many WGSL operators and builtin
functions are specified to produce abstract results when applied
to abstract inputs, but for now naga simply concretizes them all
before applying the operation. We will expand naga's abstract type
support in subsequent pull requests.
As part of this work, the public types naga::ScalarKind and
naga::Literal now have new variants, AbstractInt and AbstractFloat.
By @jimblandy in #4743, #4755.
Instance::enumerate_adapters now returns Vec<Adapter> instead of an ExactSizeIteratorThis allows us to support WebGPU and WebGL in the same binary.
- let adapters: Vec<Adapter> = instance.enumerate_adapters(wgpu::Backends::all()).collect();
+ let adapters: Vec<Adapter> = instance.enumerate_adapters(wgpu::Backends::all());
By @wumpf in #5044
device.poll() now returns a MaintainResult instead of a boolThis is a forward looking change, as we plan to add more information to the MaintainResult in the future.
This enum has the same data as the boolean, but with some useful helper functions.
- let queue_finished: bool = device.poll(wgpu::Maintain::Wait);
+ let queue_finished: bool = device.poll(wgpu::Maintain::Wait).is_queue_empty();
By @cwfitzgerald in #5053
DownlevelFlags::VERTEX_AND_INSTANCE_INDEX_RESPECTS_RESPECTIVE_FIRST_VALUE_IN_INDIRECT_DRAW to know if @builtin(vertex_index) and @builtin(instance_index) will respect the first_vertex / first_instance in indirect calls. If this is not present, both will always start counting from 0. Currently enabled on all backends except DX12. By @cwfitzgerald in #4722.FLOAT32_FILTERABLE feature (web and native, corresponds to WebGPU's float32-filterable). By @almarklein in #4759.TextureFormat::block_size is deprecated, use TextureFormat::block_copy_size instead: By @wumpf in #4647.DispatchIndirect, DrawIndexedIndirect, and DrawIndirect types in the wgpu::util module to DispatchIndirectArgs, DrawIndexedIndirectArgs, and DrawIndirectArgs. By @cwfitzgerald in #4723.encoder.clear_buffer an Option<u64> instead of Option<NonZero<u64>>. By @nical in #4737.info log level noise. By @nical in #4769, #4711 and #4772features & limits fields of DeviceDescriptor to required_features & required_limits. By @teoxoy in #4803.SurfaceConfiguration now exposes desired_maximum_frame_latency which was previously hard-coded to 2. By setting it to 1 you can reduce latency under the risk of making GPU & CPU work sequential. Currently, on DX12 this affects the MaximumFrameLatency, on all other backends except OpenGL the size of the swapchain (on OpenGL this has no effect). By @emilk & @wumpf in #4899@builtin(instance_index) now properly reflects the range provided in the draw call instead of always counting from 0. By @cwfitzgerald in #4722.POLYGON_MODE_LINE and POLYGON_MODE_POINT. By @valaphee in #4836.1.0lf denotes an f64 value. There has been experimental support for an f64 type for a while, but until now there was no syntax for writing literals with that type. As before, naga module validation rejects f64 values unless naga::valid::Capabilities::FLOAT64 is requested. By @jimblandy in #4747.--bulk-validate option to naga CLI. By @jimblandy in #4871.cargo xtask validate now runs validation jobs in parallel, using the jobserver protocol to limit concurrency, and offers a validate all subcommand, which runs all available validation types. By @jimblandy in #4902.span and validate features. Always fully validate shader modules, and always track source positions for use in error messages. By @teoxoy in #4706.Scalar struct type for use in naga's IR, and update all frontend, middle, and backend code appropriately. By @jimblandy in #4673.naga::Literal variant, I64, for signed 64-bit literals. #4711.struct member padding always. By @ErichDonGubler in #4701.i suffix on i32 literals. By @jimblandy in #4863.f suffix on f32 literals. By @jimblandy in #4869.BufferMappedRange trait is now WasmNotSendSync, i.e. it is Send/Sync if not on wasm or fragile-send-sync-non-atomic-wasm is enabled. By @wumpf in #4818.wgpu_types::CompositeAlphaMode serde serialization to spec. By @littledivy in #4940.ConfigureSurfaceError::TooLarge. By @Dinnerbone in #4960.DeviceLostCallbackC params. By @bradwerth in #5032.Queue::write_texture on DX12. By @DTZxPorter in #4990.VK_EXT_robustness2 only when not using an outdated intel iGPU driver. By @TheoDulka in #4602.BufferSlice::get_mapped_range multiple times on the same buffer slice (instead of throwing a Javascript exception). By @DouglasDwyer in #4726.wgpu::Instance instead of sharing a global one. By @Zoxc in #4603dot, reflect, distance, and ldexp builtin functions. Correct the WGSL generated for constructing 64-bit floating-point matrices. Add tests for all the above. By @jimblandy in #4684.alias declarations in naga IR Types. By @jimblandy in #4733.COPY_SRC usage flag in surface configuration. By @Toqozz in #4852.Nothing published for this version
add helpers for IDXGIFactoryMedia
create_swapchain_for_composition_surface_handle- add COM helpers - enable D3D11 adapter use
expose all indirect argument types
- update libloading to 0.7
libloading to 0.7Nothing published for this version
debug impl for root descriptors
- resource transitions - dynamic library loading
- add D3DHeap - add root descriptor
D3DHeap
- basic version
Your coding agent can read these notes before it upgrades. Set up the MCP server →