-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(deps): update rust crate wgpu_upstream to 0.20.0 #36
Open
renovate
wants to merge
1
commit into
master
Choose a base branch
from
renovate/wgpu_upstream-0.x
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
renovate
bot
force-pushed
the
renovate/wgpu_upstream-0.x
branch
from
September 27, 2023 19:31
148c143
to
e8c7f16
Compare
renovate
bot
changed the title
fix(deps): update rust crate wgpu_upstream to 0.17.0
fix(deps): update rust crate wgpu_upstream to 0.17.1
Sep 27, 2023
renovate
bot
changed the title
fix(deps): update rust crate wgpu_upstream to 0.17.1
fix(deps): update rust crate wgpu_upstream to 0.17.1 - autoclosed
Oct 19, 2023
renovate
bot
changed the title
fix(deps): update rust crate wgpu_upstream to 0.17.1 - autoclosed
fix(deps): update rust crate wgpu_upstream to 0.17.1
Oct 25, 2023
renovate
bot
changed the title
fix(deps): update rust crate wgpu_upstream to 0.17.1
fix(deps): update rust crate wgpu_upstream to 0.18.0
Oct 25, 2023
renovate
bot
force-pushed
the
renovate/wgpu_upstream-0.x
branch
2 times, most recently
from
October 31, 2023 18:47
c15481e
to
7424c8b
Compare
Blocked until |
renovate
bot
force-pushed
the
renovate/wgpu_upstream-0.x
branch
from
January 17, 2024 23:20
7424c8b
to
7013e99
Compare
renovate
bot
changed the title
fix(deps): update rust crate wgpu_upstream to 0.18.0
fix(deps): update rust crate wgpu_upstream to 0.19.0
Jan 17, 2024
⚠ Artifact update problemRenovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is. ♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
The artifact failure details are included below: File name: Cargo.lock
File name: Cargo.lock
|
renovate
bot
force-pushed
the
renovate/wgpu_upstream-0.x
branch
from
January 22, 2024 01:07
7013e99
to
8c0d677
Compare
renovate
bot
changed the title
fix(deps): update rust crate wgpu_upstream to 0.19.0
fix(deps): update rust crate wgpu_upstream to 0.19.1
Jan 22, 2024
renovate
bot
force-pushed
the
renovate/wgpu_upstream-0.x
branch
from
March 1, 2024 00:14
8c0d677
to
cc34f01
Compare
renovate
bot
changed the title
fix(deps): update rust crate wgpu_upstream to 0.19.1
fix(deps): update rust crate wgpu_upstream to 0.19.2
Mar 1, 2024
renovate
bot
force-pushed
the
renovate/wgpu_upstream-0.x
branch
from
March 2, 2024 17:03
cc34f01
to
1aca08e
Compare
renovate
bot
changed the title
fix(deps): update rust crate wgpu_upstream to 0.19.2
fix(deps): update rust crate wgpu_upstream to 0.19.3
Mar 2, 2024
renovate
bot
force-pushed
the
renovate/wgpu_upstream-0.x
branch
from
April 18, 2024 01:58
1aca08e
to
36ce375
Compare
renovate
bot
changed the title
fix(deps): update rust crate wgpu_upstream to 0.19.3
fix(deps): update rust crate wgpu_upstream to 0.19.4
Apr 18, 2024
renovate
bot
force-pushed
the
renovate/wgpu_upstream-0.x
branch
from
April 29, 2024 01:51
36ce375
to
e400d43
Compare
renovate
bot
changed the title
fix(deps): update rust crate wgpu_upstream to 0.19.4
fix(deps): update rust crate wgpu_upstream to 0.20.0
Apr 29, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.17.1
->0.20.0
Release Notes
gfx-rs/wgpu (wgpu_upstream)
v0.20.1
Compare Source
This release included v0.21.0 of
wgpu-core
andwgpu-hal
, due to breaking changes needed to solve vulkan validation issues.Bug Fixes
This release fixes the validation errors whenever a surface is used with the vulkan backend. By @cwfitzgerald in #5681.
General
Metal
Vulkan
GLES / OpenGL
Naga
switch
statements with a single body for all cases. These are now written asdo {} while(false);
loops in hlsl-out and glsl-out. By @Imberflur in #5654continue
statements in switches by setting a flag and breaking from the switch. This allows such constructs to work with FXC which does not supportcontinue
within a switch. By @Imberflur in #5654v0.20.0
Compare Source
Major Changes
Pipeline overridable constants
Wgpu supports now pipeline-overridable constants
This allows you to define constants in wgsl like this:
And then set them at runtime like so on your pipeline consuming this shader:
By @teoxoy & @jimblandy in #5500
Changed feature requirements for timestamps
Due to a specification change
write_timestamp
is no longer supported on WebGPU.wgpu::CommandEncoder::write_timestamp
requires now the newwgpu::Features::TIMESTAMP_QUERY_INSIDE_ENCODERS
feature which is available on all native backends but not on WebGPU.By @wumpf in #5188
Wgsl const evaluation for many more built-ins
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
New native-only wgsl features
Subgroup operations
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 exceptsubgroupBarrier
in fragment & compute, supported on Vulkan, DX12 and Metal.wgpu::Features::SUBGROUP_VERTEX
, for all operations exceptsubgroupBarrier
general operations in vertex shaders, supported on Vulkanwgpu::Features::SUBGROUP_BARRIER
, for support of thesubgroupBarrier
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
Signed and unsigned 64 bit integer support in shaders.
wgpu::Features::SHADER_INT64
enables 64 bit integer signed and unsigned integer variables in wgsl (i64
andu64
respectively).Supported on Vulkan, DX12 (requires DXC) and Metal (with MSL 2.3+ support).
By @atlv24 and @cwfitzgerald in #5154
New features
General
Unorm10_10_10_2
VertexFormat by @McMackety in #5477wgpu-types
'strace
andreplay
features have been replaced by theserde
feature. By @KirmesBude in #5149wgpu-core
'sserial-pass
feature has been removed. Useserde
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 usingInstanceFlags::from_build_config
.InstanceFlags::with_env
with the newWGPU_GPU_BASED_VALIDATION
environment variable.wgpu::Instance
can now report whichwgpu::Backends
are available based on the build configuration. By @wumpf #5167wgpu_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 tonaga
. By @stefnotch in #5410wgpu::CommandEncoder::as_hal_mut
wgpu::TextureView::as_hal
wgpu::Texture::as_hal
now returns a user-defined type to match the other as_hal functionsNaga
--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_coreDevice
to create nagaValidator
s. By @atlv24 #5606WebGPU
device_set_device_lost_callback
method forContextWebGpu
. By @suti in #5438ReadOnly
andReadWrite
. By @JolifantoBambla in #5434GLES / OpenGL
get_texture_format_features
cheap. By @Dinnerbone in #5346DEPTH32FLOAT_STENCIL8
as supported in GLES. By @Dinnerbone in #5370TEXTURE_COMPRESSION_ETC2
. By @Valaphee in #5568driver
anddriver_info
, with the OpenGL flavor and version, similar to Vulkan. By @valaphee in #5482Metal
DX12
Other performance improvements
Documentation
wgpu_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 #5601Bug Fixes
General
serde
feature not compiling forwgpu-types
. By @KirmesBude in #5149storage
anduniform
vars. By @jimblandy #5222extern "C"
+ [no_mangle]) from RenderPass & ComputePass recording. By @wumpf in #5409.Naga
Expression::ZeroValue
. By @Imberflur in #5587.extractBits
andinsertBits
whenoffset + count
overflows the bit width. By @cwfitzgerald in #5305clamp
whenmin
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.GLES / OpenGL
first_instance
getting ignored in draw indexed whenARB_shader_draw_parameters
feature is present andbase_vertex
is 0. By @valaphee in #5482Vulkan
wgpu_hal::vulkan::CommandEncoder
to make surediscard_encoding
is not called in the closed state. By @villuna in #5557LocalType
caching. By @atlv24 in #5590ash
to0.38
. By @MarijnS95 in #5504.Tests
multithreaded_compute
test. By @jimblandy in #5129.v0.19.4
Compare Source
Bug Fixes
General
wgpu-profiler
. By @cwfitzgerald in #5517WebGPU
v0.19.3
Compare Source
This release includes
wgpu
,wgpu-core
, andwgpu-hal
. All other crates are unchanged.Major Changes
Vendored WebGPU Bindings from
web_sys
--cfg=web_sys_unstable_apis
is no longer needed in yourRUSTFLAGS
to compile for WebGPU!!!While WebGPU's javascript api is stable in the browsers, the
web_sys
bindings for WebGPU are still improving. As such they are hidden behind the special cfg--cfg=web_sys_unstable_apis
and are not available by default. Everyone who wanted to use our WebGPU backend needed to enable this cfg in theirRUSTFLAGS
. This was very inconvenient and made it hard to use WebGPU, especially when WebGPU is enabled by default. Additionally, the unstable APIs don't adhere to semver, so there were repeated breakages.To combat this problem we have decided to vendor the
web_sys
bindings for WebGPU within the crate. Notably we are not forking the bindings, merely vendoring, so any improvements we make to the bindings will be contributed directly to upstreamweb_sys
.By @cwfitzgerald in #5325.
Bug Fixes
General
Android
winit
. By @ashdnazg in #5326.v0.19.2
Compare Source
This release includes
wgpu
,wgpu-core
,wgpu-hal
,wgpu-types
, andnaga
. All other crates are unchanged.Added/New Features
General
wgpu::Id
now implementsPartialOrd
/Ord
allowing it to be put inBTreeMap
s. By @cwfitzgerald and @9291Sam in #5176OpenGL
wgsl-out
Documentation
wgpu::Instance::create_surface
documentation. By @HexoKnight in #5280.wgpu::CommandEncoder::clear_buffer
documentation. By @PWhiddy in #5281.Surface
configuration incorrectly claimed thatwgpu::Instance::create_surface
was unsafe. By @hackaugusto in #5265.Bug Fixes
General
clone
during GLSL shader ingestion. By @a1phyr in #5118.Device::clear_buffer
whereoffset + size > buffer.size
was not checked whensize
was omitted. By @ErichDonGubler in #5282.DX12
panic!
when droppingInstance
withoutInstanceFlags::VALIDATION
. By @hakolao in #5134OpenGL
Etc2Rgba8Unorm
format. By @andristarr in #5178libX11.so.6
in addition tolibX11.so
on linux. #5307GL_EXT_texture_shadow_lod
to support sampling a cube depth texture with an explicit LOD. By @cmrschwarz in #5171.glsl-in
v0.19.1
Compare Source
This release includes
wgpu
andwgpu-hal
. The rest of the crates are unchanged since 0.19.0.Bug Fixes
DX12
OpenGL
WebGPU
web_sys_unstable_apis
set. By @rukai in #5104Documentation
SurfaceTexture::present
. By @i509VCB in #5093.v0.19.0
Compare Source
This release includes:
wgpu
wgpu-core
wgpu-hal
wgpu-types
wgpu-info
naga
(skipped from 0.14 to 0.19)naga-cli
(skipped from 0.14 to 0.19)d3d12
(skipped from 0.7 to 0.19)Improved Multithreading through internal use of Reference Counting
Large refactoring of wgpu’s internals aiming at reducing lock contention, and providing better performance when using wgpu on multiple threads.
Check the blog post!
By @gents83 in #3626 and thanks also to @jimblandy, @nical, @Wumpf, @Elabajaba & @cwfitzgerald
All Public Dependencies are Re-Exported
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:
Feature Flag Changes
WebGPU & WebGL in the same Binary
Enabling
webgl
no longer removes thewebgpu
backend.Instead, there's a new (default enabled)
webgpu
feature that allows to explicitly opt-out ofwebgpu
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 thewebgl
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
andmetal
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.
Direct3D 11 Backend Removal
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 aorder
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.
Safe & unified Surface Creation
It is now possible to safely create a
wgpu::Surface
withwgpu::Instance::create_surface()
by lettingwgpu::Surface
hold a lifetime towindow
.Passing an owned value
window
toSurface
will return awgpu::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 implementingraw-window-handle
'sHasWindowHandle
&HasDisplayHandle
traits, i.e. most window types.For web canvas types this has to be done explicitly:
All unsafe variants are now grouped under
wgpu::Instance::create_surface_unsafe
which takes thewgpu::SurfaceTargetUnsafe
enum and always returnswgpu::Surface<'static>
.In order to create a
wgpu::Surface<'static>
without passing ownership of the window usewgpu::SurfaceTargetUnsafe::from_window
:The easiest way to make this code safe is to use shared ownership:
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
Add partial Support for WGSL Abstract Types
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:
With this change, you can now simply write:
Even though the literals are abstract integers, Naga recognizes
that it is safe and necessary to convert them to
f32
values inorder to build the vector. You can also use abstract values as
initializers for global constants and global and local variables,
like this:
The literals
1
and0
are abstract integers, and the expressionvec2(1, 0)
is an abstract vector. However, Naga recognizes thatit can convert that to the concrete type
vec2<f32>
to satisfythe 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
andnaga::Literal
now have new variants,AbstractInt
andAbstractFloat
.By @jimblandy in #4743, #4755.
Instance::enumerate_adapters
now returnsVec<Adapter>
instead of anExactSizeIterator
This allows us to support WebGPU and WebGL in the same binary.
By @wumpf in #5044
device.poll()
now returns aMaintainResult
instead of abool
This 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.
By @cwfitzgerald in #5053
New Features
General
DownlevelFlags::VERTEX_AND_INSTANCE_INDEX_RESPECTS_RESPECTIVE_FIRST_VALUE_IN_INDIRECT_DRAW
to know if@builtin(vertex_index)
and@builtin(instance_index)
will respect thefirst_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'sfloat32-filterable
). By @almarklein in #4759.TextureFormat::block_size
is deprecated, useTextureFormat::block_copy_size
instead: By @wumpf in #4647.DispatchIndirect
,DrawIndexedIndirect
, andDrawIndirect
types in thewgpu::util
module toDispatchIndirectArgs
,DrawIndexedIndirectArgs
, andDrawIndirectArgs
. By @cwfitzgerald in #4723.encoder.clear_buffer
anOption<u64>
instead ofOption<NonZero<u64>>
. By @nical in #4737.info
log level noise. By @nical in #4769, #4711 and #4772features
&limits
fields ofDeviceDescriptor
torequired_features
&required_limits
. By @teoxoy in #4803.SurfaceConfiguration
now exposesdesired_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 theMaximumFrameLatency
, on all other backends except OpenGL the size of the swapchain (on OpenGL this has no effect). By @emilk & @wumpf in #4899OpenGL
@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
andPOLYGON_MODE_POINT
. By @valaphee in #4836.Naga
1.0lf
denotes anf64
value. There has been experimental support for anf64
type for a while, but until now there was no syntax for writing literals with that type. As before, Naga module validation rejectsf64
values unlessnaga::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 avalidate all
subcommand, which runs all available validation types. By @jimblandy in #4902.span
andvalidate
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 oni32
literals. By @jimblandy in #4863.f
suffix onf32
literals. By @jimblandy in #4869.Bug Fixes
General
BufferMappedRange
trait is nowWasmNotSendSync
, i.e. it isSend
/Sync
if not on wasm orfragile-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.DX12
Queue::write_texture
on DX12. By @DTZxPorter in #4990.Vulkan
VK_EXT_robustness2
only when not using an outdated intel iGPU driver. By @TheoDulka in #4602.WebGPU
BufferSlice::get_mapped_range
multiple times on the same buffer slice (instead of throwing a Javascript exception). By @DouglasDwyer in #4726.WGL
wgpu::Instance
instead of sharing a global one. By @Zoxc in #4603Naga
dot
,reflect
,distance
, andldexp
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 IRType
s. By @jimblandy in #4733.Metal
COPY_SRC
usage flag in surface configuration. By @Toqozz in #4852.Examples
wgpu error: Validation Error
if arguments are missing. By @vilcans in #4939.v0.18.0
Compare Source
For naga changelogs at or before v0.14.0. See naga's changelog.
Desktop OpenGL 3.3+ Support on Windows
We now support OpenGL on Windows! This brings support for a vast majority of the hardware that used to be covered by our DX11 backend. As of this writing we support OpenGL 3.3+, though there are efforts to reduce that further.
This allows us to cover the last 12 years of Intel GPUs (starting with Ivy Bridge; aka 3xxx), and the last 16 years of AMD (starting with Terascale; aka HD 2000) / NVidia GPUs (starting with Tesla; aka GeForce 8xxx).
By @Zoxc in #4248
Timestamp Queries Supported on Metal and OpenGL
Timestamp queries are now supported on both Metal and Desktop OpenGL. On Apple chips on Metal, they only support timestamp queries in command buffers or in the renderpass descriptor,
they do not support them inside a pass.
Metal: By @Wumpf in #4008
OpenGL: By @Zoxc in #4267
Render/Compute Pass Query Writes
Addition of the
TimestampWrites
type to compute and render pass descriptors to allow profiling on tilers which do not support timestamps inside passes.Added an example to demonstrate the various kinds of timestamps.
Additionally, metal now supports timestamp queries!
By @FL33TW00D & @wumpf in #3636.
Occlusion Queries
We now support binary occlusion queries! This allows you to determine if any of the draw calls within the query drew any pixels.
Use the new
occlusion_query_set
field onRenderPassDescriptor
to give a query set that occlusion queries will write to.let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { // ... + occlusion_query_set: Some(&my_occlusion_query_set), });
Within the renderpass do the following to write the occlusion query results to the query set at the given index:
These are binary occlusion queries, so the result will be either 0 or an unspecified non-zero value.
By @Valaphee in #3402
Shader Improvements
Shader Validation Improvements
RenderPass
StoreOp
is now Enumerationwgpu::Operations::store
used to be an underdocumented boolean value,causing misunderstandings of the effect of setting it to
false
.The API now more closely resembles WebGPU which distinguishes between
store
anddiscard
,see WebGPU spec on GPUStoreOp.
By @wumpf in #4147
Instance Descriptor Settings
The instance descriptor grew two more fields:
flags
andgles_minor_version
.flags
allow you to toggle the underlying api validation layers, debug information about shaders and objects in capture programs, and the ability to discard labelsgles_minor_version
is a rather niche feature that allows you to force the GLES backend to use a specific minor version, this is useful to get ANGLE to enable more than GLES 3.0.gles_minor_version
: By @PJB3005 in #3998flags
: By @nical in #4230Many New Examples!
Revamped Testing Suite
Our testing harness was completely revamped and now automatically runs against all gpus in the system, shows the expected status of every test, and is tolerant to flakes.
Additionally, we have filled out our CI to now run the latest versions of WARP and Mesa. This means we can test even more features on CI than before.
By @cwfitzgerald in #3873
The GLES backend is now optional on macOS
The
angle
feature flag has to be set for the GLES backend to be enaConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.