2019-03-05 12:59:01 +00:00
# Change Log
2021-12-17 04:57:21 +00:00
## wgpu-0.12 (2021-12-18)
- API:
- `MULTIVIEW` feature
- `DEPTH_CLIP_CONTROL` feature to replace the old `DEPTH_CLAMP`
- `TEXTURE_FORMAT_16BIT_NORM` feature
- push/pop error scopes on the device
- more limits for compute shaders
- `SamplerBindingType` instead of booleans
- sampler arrays are supported by `TEXTURE_BINDING_ARRAY` feature
- "glsl" cargo feature for accepting GLSL shader code
- enforced MSRV-1.53
- correctness:
- textures are zero-initialized
- lots and lots of fixes
- validation:
- match texture-sampler pairs
- check `min_binding_size` late at draw
- check formats to match in `copy_texture_to_texture`
- allow `strip_index_format` to be none if unused
- check workgroup sizes and counts
- shaders:
- please refer to [naga-0.8 changelog ](https://github.com/gfx-rs/naga/pull/1610/files )
- nice error messages
### wgpu-core-0.11.3, wgpu-hal-0.11.5, wgpu-0.11.1 (2021-12-01)
- Core:
- validate device descriptor before actually creating it
- fix validation of texture-sampler pairs
- Vulkan:
- fix running on Vulkan-1.1 instance
- improve detection of workaround for Intel+Nvidia on Linux
- fix resource limits on Vulkan-1.2
- fix the check for storage buffer requirement
- change internal semaphore logic to work around Linux+Intel bugs
- fix enabling extension-provided features
- GLES:
- fix running on old and bogus drivers
- fix stale samplers on bindings change
- fix integer textures
- fix querying work group parameters
- fix stale PBO bindings caused by resource copies
- fix rendering to cubemap faces
- fix `Rgba16Float` format
- fix stale vertex attributes when changing the pipeline
- Metal:
- fix window resizing for running in multiple processes
- Web:
- fix `set_index_buffer` and `set_vertex_buffer` to have optional sizes
### wgpu-core-0.11.2, wgpu-hal-0.11.4 (2021-10-22)
- fix buffer transition barriers
- Metal:
- disable RW buffers on macOS 10.11
- fix memory leaks in render pass descriptor
- WebGL:
- fix surface reconfiguration
- GLES:
- fix mapping when persistent mapping isn't supported
- allow presentation in Android emulator
- fix sRGB attributes on EGL-1.4 contexts
### wgpu-hal-0.11.3 (2021-10-16)
- GL:
- fix mapping flags and buffer initialization
- fix context creation when sRGB is available
### wgpu-core-0.11.1 (2021-10-15)
- fix bind group layout lifetime with regard to bind groups
### wgpu-hal-0.11.2 (2021-10-12)
2021-10-12 16:12:51 +00:00
- GL/WebGL: fix vertex buffer bindings with non-zero first instance
- DX12: fix cube array view construction
2021-12-17 04:57:21 +00:00
### wgpu-hal-0.11.1 (2021-10-09)
2021-10-09 18:49:05 +00:00
- Vulkan: fix NV optimus detection on Linux
2021-10-09 19:08:40 +00:00
- GL:
- fix indirect dispatch buffers
- WebGL:
- fix querying storage-related limits
- work around a browser bug in the clear shader
2021-10-08 00:56:20 +00:00
2021-10-07 22:52:56 +00:00
## wgpu-0.11 (2021-10-07)
- Infrastructure:
- Deno WebGPU plugin is a part of the repository
- WebGPU CTS is ran on CI via Deno
- API:
- initial WebGL support
- `SwapchainFrame` is removed. `SurfaceTexture::present()` needs to be called instead of dropping.
- better SPIR-V control flow processing
- ability to request a software (fallback) adapter
- new limits for `min_uniform_buffer_offset_alignment` and `min_storage_buffer_offset_alignment`
- features:
- new `PARTIALLY_BOUND_BINDING_ARRAY`
- `NON_FILL_POLYGON_MODE` is split into `POLYGON_MODE_LINE` and `POLYGON_MODE_POINT`
- fixes:
- many shader-related fixes in Naga-0.7
- fix a panic in resource cleanup happening when they are dropped on another thread
- Vulkan:
- create SPIR-V per entry point to work around driver bugs
- expose higher descriptor limits based on descriptor indexing capabilities
- GL and Vulkan:
- Fix renderdoc device pointers
- optimization:
- on Vulkan, bounds checks are omitted if the platform can do them natively
### wgpu-core-0.10.4, wgpu-0.10.2 (2021-09-23)
- fix `write_texture` for array textures
- fix closing an encoder on validation error
- expose Metal surface creation
- panic with an actual error message in the default handler
### wgpu-hal-0.10.7 (2021-09-14)
- Metal:
- fix stencil back-face state
- fix the limit on command buffer count
### wgpu-hal-0.10.6 (2021-09-12)
- Metal:
- fix stencil operations
- fix memory leak on M1 when out of focus
- fix depth clamping checks
- fix unsized storage buffers beyond the first
### wgpu-core-0.10.3, wgpu-hal-0.10.4 (2021-09-08)
- Vulkan:
- fix read access barriers for writable storage buffers
- fix shaders using cube array textures
- work around Linux Intel+Nvidia driver conflicts
- work around Adreno bug with `OpName`
- DX12:
- fix storage binding offsets
- Metal:
- fix compressed texture copies
### wgpu-core-0.10.2, wgpu-hal-0.10.3 (2021-09-01)
- All:
- fix querying the size of storage textures
- Vulkan:
- use render pass labels
- Metal:
- fix moving the surface between displays
- DX12:
- enable BC compressed textures
- GL:
- fix vertex-buffer and storage related limits
### wgpu-core-0.10.1, wgpu-hal-0.10.2 (2021-08-24)
2021-08-19 16:22:54 +00:00
- All:
- expose more formats via adapter-specific feature
2021-08-20 15:56:49 +00:00
- fix creation of depth+stencil views
2021-10-07 22:52:56 +00:00
- validate cube textures to not be used as storage
- fix mip level count check for storage textures
2021-08-19 16:22:54 +00:00
- Metal:
- fix usage of work group memory
2021-10-07 22:52:56 +00:00
- DX12:
- critical fix of pipeline layout
2021-08-19 16:22:54 +00:00
2021-08-18 19:06:21 +00:00
## v0.10 (2021-08-18)
2021-06-30 19:16:06 +00:00
- Infrastructure:
2021-08-18 19:06:21 +00:00
- `gfx-hal` is replaced by the in-house graphics abstraction `wgpu-hal` . Backends: Vulkan, Metal, D3D-12, and OpenGL ES-3.
- examples are tested automatically for image snapshots.
2021-06-30 19:16:06 +00:00
- API:
- `cross` feature is removed entirely. Only Rust code from now on.
- processing SPIR-V inputs for later translation now requires `spirv` compile feature enabled
- new `Features::SPIRV_SHADER_PASSTHROUGH` run-time feature allows providing pass-through SPIR-V (orthogonal to the compile feature)
2021-07-21 21:47:12 +00:00
- several bitflag names are renamed to plural: `TextureUsage` , `BufferUsage` , `ColorWrite` .
2021-08-10 05:46:34 +00:00
- the `SwapChain` is merged into `Surface` . Returned frames are `Texture` instead of `TextureView` .
2021-07-28 04:09:57 +00:00
- renamed `TextureUsage` bits: `SAMPLED` -> `TEXTURE_BINDING` , `STORAGE` -> `STORAGE_BINDING` .
2021-08-18 19:06:21 +00:00
- renamed `InputStepMode` to `VertexStepMode` .
- readable storage textures are no longer a part of the base API. Only exposed via format-specific features, non-portably.
- implemented `Rgb9e5Ufloat` format.
- added limits for binding sizes, vertex data, per-stage bindings, and others.
- reworked downlevel flags, added downlevel limits.
- `resolver = "2"` is now required in top-level cargo manifests
2021-06-27 15:17:12 +00:00
- Fixed:
- `Device::create_query_set` would return an error when creating exactly `QUERY_SET_MAX_QUERIES` (8192) queries. Now it only returns an error when trying to create *more* than `QUERY_SET_MAX_QUERIES` queries.
2021-10-07 22:52:56 +00:00
### wgpu-core-0.9.2
2021-08-18 19:06:21 +00:00
- fix `Features::TEXTURE_SPECIFIC_FORMAT_FEATURES` not being supported for rendertargets
2021-10-07 22:52:56 +00:00
### wgpu-core-0.9.1 (2021-07-13)
2021-08-18 19:06:21 +00:00
- fix buffer inits delayed by a frame
- fix query resolves to initialize buffers
- fix pipeline statistics stride
- fix the check for maximum query count
2021-06-18 16:12:56 +00:00
## v0.9 (2021-06-18)
- Updated:
- naga to `v0.5` .
- Added:
- `Features::VERTEX_WRITABLE_STORAGE` .
- `Features::CLEAR_COMMANDS` which allows you to use `cmd_buf.clear_texture` and `cmd_buf.clear_buffer` .
- Changed:
- Updated default storage buffer/image limit to `8` from `4` .
- Fixed:
- `Buffer::get_mapped_range` can now have a range of zero.
- Fixed output spirv requiring the "kernal" capability.
- Fixed segfault due to improper drop order.
- Fixed incorrect dynamic stencil reference for Replace ops.
- Fixed tracking of temporary resources.
- Stopped unconditionally adding cubemap flags when the backend doesn't support cubemaps.
- Validation:
- Ensure that if resources are viewed from the vertex stage, they are read only unless `Features::VERTEX_WRITABLE_STORAGE` is true.
- Ensure storage class (i.e. storage vs uniform) is consistent between the shader and the pipeline layout.
- Error when a color texture is used as a depth/stencil texture.
- Check that pipeline output formats are logical
- Added shader label to log messages if validation fails.
- Tracing:
- Make renderpasses show up in the trace before they are run.
- Docs:
- Fix typo in `PowerPreference::LowPower` description.
- Player:
- Automatically start and stop RenderDoc captures.
- Examples:
- Handle winit's unconditional exception.
- Internal:
- Merged wgpu-rs and wgpu back into a single repository.
- The tracker was split into two different stateful/stateless trackers to reduce overhead.
- Added code coverage testing
- CI can now test on lavapipe
- Add missing extern "C" in wgpu-core on `wgpu_render_pass_execute_bundles`
- Fix incorrect function name `wgpu_render_pass_bundle_indexed_indirect` to `wgpu_render_bundle_draw_indexed_indirect` .
2021-10-07 22:52:56 +00:00
### wgpu-types-0.8.1 (2021-06-08)
2021-06-18 16:12:56 +00:00
- fix dynamic stencil reference for Replace ops
2021-10-07 22:52:56 +00:00
### v0.8.1 (2021-05-06)
2021-06-18 16:12:56 +00:00
- fix SPIR-V generation from WGSL, which was broken due to "Kernel" capability
- validate buffer storage classes
2021-06-18 21:30:10 +00:00
- Added support for storage texture arrays for Vulkan and Metal.
2021-04-29 15:32:37 +00:00
## v0.8 (2021-04-29)
2021-04-28 14:44:16 +00:00
- Naga is used by default to translate shaders, SPIRV-Cross is optional behind `cross` feature
- Features:
- buffers are zero-initialized
- downlevel limits for DX11/OpenGL support
- conservative rasterization (native-only)
- buffer resource indexing (native-only)
- API adjustments to the spec:
2021-06-05 21:09:06 +00:00
- Renamed `RenderPassColorAttachmentDescriptor` to `RenderPassColorAttachment` :
2021-06-01 06:03:59 +00:00
- Renamed the `attachment` member to `view`
- Renamed `RenderPassDepthStencilAttachmentDescriptor` to `RenderPassDepthStencilAttachment` :
- Renamed the `attachment` member to `view`
- Renamed `VertexFormat` values
- Examples: `Float3` -> `Float32x3` , `Ushort2` -> `Uint16x2`
- Renamed the `depth` value of `Extent3d` to `depth_or_array_layers`
- Updated blending options in `ColorTargetState` :
- Renamed `BlendState` to `BlendComponent`
- Added `BlendState` struct to hold color and alpha blend state
- Moved `color_blend` and `alpha_blend` members into `blend` member
- Moved `clamp_depth` from `RastizerState` to `PrimitiveState`
- Updated `PrimitiveState` :
- Added `conservative` member for enabling conservative rasterization
- Updated copy view structs:
- Renamed `TextureCopyView` to `ImageCopyTexture`
- Renamed `TextureDataLayout` to `ImageDataLayout`
- Changed `bytes_per_row` and `rows_per_image` members of `ImageDataLayout` from `u32` to `Option<NonZeroU32>` <!-- wgpu-rs only -->
- Changed `BindingResource::Binding` from containing fields directly to containing a `BufferBinding`
- Added `BindingResource::BufferArray`
2021-04-28 14:44:16 +00:00
- Infrastructure:
- switch from `tracing` to `profiling`
- more concrete and detailed errors
- API traces include the command that crashed/panicked
2021-04-29 15:32:37 +00:00
- Vulkan Portability support is removed from Apple platforms
2021-04-28 14:44:16 +00:00
- Validation:
- texture bindings
- filtering of textures by samplers
- interpolation qualifiers
- allow vertex components to be underspecified
2021-10-07 22:52:56 +00:00
### wgpu-core-0.7.1 (2021-02-25)
2021-04-28 14:44:16 +00:00
- expose `wgc::device::queue` sub-module in public
- fix the indexed buffer check
- fix command allocator race condition
2021-02-01 07:33:46 +00:00
## v0.7 (2021-01-31)
2021-01-27 19:57:17 +00:00
- Major API changes:
- `RenderPipelineDescriptor`
- `BindingType`
2021-06-03 01:42:15 +00:00
- new `ShaderModuleDescriptor`
- new `RenderEncoder`
2021-01-27 19:57:17 +00:00
- Features:
- (beta) WGSL support, including the ability to bypass SPIR-V entirely
- (beta) implicit bind group layout support
2021-06-03 01:42:15 +00:00
- better error messages
2021-01-27 19:57:17 +00:00
- timestamp and pipeline statistics queries
- ETC2 and ASTC compressed textures
- (beta) targeting WASM with WebGL backend
- reduced dependencies
- Native-only:
- clamp-to-border addressing
- polygon fill modes
- query a format for extra capabilities
- `f64` support in shaders
- Validation:
- shader interface
- render pipeline descriptor
- vertex buffers
2021-06-03 01:42:15 +00:00
### wgpu-0.6.2 (2020-11-24)
- don't panic in the staging belt if the channel is dropped
2020-08-17 05:24:23 +00:00
## v0.6 (2020-08-17)
- Crates:
- C API is moved to [another repository ](https://github.com/gfx-rs/wgpu-native )
- `player` : standalone API replayer and tester
- Features:
- Proper error handling with all functions returning `Result`
- Graceful handling of "error" objects
- API tracing [infrastructure ](http://kvark.github.io/wgpu/debug/test/ron/2020/07/18/wgpu-api-tracing.html )
- uploading data with `write_buffer` /`write_texture` queue operations
- reusable render bundles
- read-only depth/stencil attachments
- bind group layout deduplication
- Cows, cows everywhere
- Web+Native features:
- Depth clamping (feature)
- BC texture compression
- Native-only features:
- mappable primary buffers
- texture array bindings
- push constants
- multi-draw indirect
- Validation:
- all transfer operations
- all resource creation
- bind group matching to the layout
- experimental shader interface matching with Naga
2021-10-07 22:52:56 +00:00
### wgpu-core-0.5.6 (2020-07-09)
2020-08-17 05:24:23 +00:00
- add debug markers support
2021-10-07 22:52:56 +00:00
### wgpu-core-0.5.5 (2020-05-20)
2020-08-17 05:24:23 +00:00
- fix destruction of adapters, swap chains, and bind group layouts
- fix command pool leak with temporary threads
- improve assertion messages
- implement `From<TextureFormat>` for `TextureComponentType`
2021-10-07 22:52:56 +00:00
### wgpu-core-0.5.4 (2020-04-24)
2020-08-17 05:24:23 +00:00
- fix memory management of staging buffers
2021-10-07 22:52:56 +00:00
### wgpu-core-0.5.3 (2020-04-18)
2020-08-17 05:24:23 +00:00
- fix reading access to storage textures
- another fix to layout transitions for swapchain images
2021-10-07 22:52:56 +00:00
### wgpu-core-0.5.2 (2020-04-15)
2020-08-17 05:24:23 +00:00
- fix read-only storage flags
- fix pipeline layout life time
- improve various assert messages
2021-10-07 22:52:56 +00:00
### wgpu-core-0.5.1 (2020-04-10)
2020-08-17 05:24:23 +00:00
- fix tracking of swapchain images that are used multiple times in a command buffer
- fix tracking of initial usage of a resource across a command buffer
2020-05-12 23:06:19 +00:00
## v0.5 (2020-04-06)
2020-04-06 03:28:14 +00:00
- Crates:
- `wgpu-types` : common types between native and web targets
- `wgpu-core` : internal API for the native and remote wrappers
- Features:
- based on gfx-hal-0.5
- moved from Rendy to the new `gfx-memory` and `gfx-descriptor` crates
- passes are now recorded on the client side. The user is also responsible to keep all resources referenced in the pass up until it ends recording.
2020-08-17 05:24:23 +00:00
- coordinate system is changed to have Y up in the rendering space
2020-04-06 03:28:14 +00:00
- revised GPU lifetime tracking of all resources
- revised usage tracking logic
- all IDs are now non-zero
- Mailbox present mode
- Validation:
- active pipeline
- Fixes:
- lots of small API changes to closely match upstream WebGPU
- true read-only storage bindings
- unmapping dropped buffers
- better error messages on misused swapchain frames
2021-10-07 22:52:56 +00:00
### wgpu-core-0.4.3 (2020-01-20)
2020-04-06 03:28:14 +00:00
- improved swap chain error handling
2021-10-07 22:52:56 +00:00
### wgpu-core-0.4.2 (2019-12-15)
2020-04-06 03:28:14 +00:00
- fixed render pass transitions
2021-10-07 22:52:56 +00:00
### wgpu-core-0.4.1 (2019-11-28)
2020-04-06 03:28:14 +00:00
- fixed depth/stencil transitions
- fixed dynamic offset iteration
2020-05-12 23:06:19 +00:00
## v0.4 (2019-11-03)
2019-11-03 23:52:57 +00:00
- Platforms: removed OpenGL/WebGL support temporarily
- Features:
- based on gfx-hal-0.4 with the new swapchain model
- exposing adapters from all available backends on a system
- tracking of samplers
- cube map support with an example
- Validation:
- buffer and texture usage
2021-10-07 22:52:56 +00:00
### wgpu-core-0.3.3 (2019-08-22)
2019-08-22 14:42:43 +00:00
- fixed instance creation on Windows
2021-10-07 22:52:56 +00:00
### wgpu-core-0.3.1 (2019-08-21)
2019-08-21 17:11:46 +00:00
- fixed pipeline barriers that aren't transitions
2020-05-12 23:06:19 +00:00
## v0.3 (2019-08-21)
2019-08-21 04:05:02 +00:00
- Platforms: experimental OpenGL/WebGL
- Crates:
- Rust API is moved out to [another repository ](https://github.com/gfx-rs/wgpu-rs )
- Features:
- based on gfx-hal-0.3 with help of `rendy-memory` and `rendy-descriptor`
- type-system-assisted deadlock prevention (for locking internal structures)
- texture sub-resource tracking
- `raw-window-handle` integration instead of `winit`
2019-11-03 23:52:57 +00:00
- multisampling with an example
2019-08-21 04:05:02 +00:00
- indirect draws and dispatches
- stencil masks and reference values
- native "compute" example
- everything implements `Debug`
- Validation
- vertex/index/instance ranges at draw calls
- bing groups vs their expected layouts
- bind group buffer ranges
- required stencil reference, blend color
2021-10-07 22:52:56 +00:00
### wgpu-core-0.2.6 (2019-04-04)
2019-08-21 04:05:02 +00:00
- fixed frame acquisition GPU waits
2021-10-07 22:52:56 +00:00
### wgpu-core-0.2.5 (2019-03-31)
2019-03-29 20:59:01 +00:00
- fixed submission tracking
- added support for blend colors
- fixed bind group compatibility at the gfx-hal level
- validating the bind groups and blend colors
2021-10-07 22:52:56 +00:00
### wgpu-core-0.2.3 (2019-03-20)
2019-03-20 14:44:25 +00:00
- fixed vertex format mapping
- fixed building with "empty" backend on Windows
- bumped the default descriptor pool size
2019-05-24 07:46:37 +00:00
- fixed host mapping alignments
2019-03-20 14:44:25 +00:00
- validating the uniform buffer offset
2020-05-12 23:06:19 +00:00
## v0.2 (2019-03-06)
2019-03-05 20:59:50 +00:00
- Platforms: iOS/Metal, D3D11
2019-03-05 12:59:01 +00:00
- Crates:
- `wgpu-remote` : remoting layer for the cross-process boundary
- `gfx-examples` : selected gfx pre-ll examples ported over
- Features:
- native example for compute
- "gfx-cube" and "gfx-shadow" examples
- copies between buffers and textures
- separate object identity for the remote client
- texture view tracking
- native swapchain resize support
- buffer mapping
- object index epochs
- comprehensive list of vertex and texture formats
- validation of pipeline compatibility with the pass
- Fixes
- fixed resource destruction
2020-05-12 23:06:19 +00:00
## v0.1 (2019-01-24)
2019-03-05 20:59:50 +00:00
- Platforms: Linux/Vulkan, Windows/Vulkan, D3D12, macOS/Metal
2019-03-05 12:59:01 +00:00
- Crates:
- `wgpu-native` : C API implementation of WebGPU, based on gfx-hal
- `wgpu-bindings` : auto-generated C headers
- `wgpu` : idiomatic Rust wrapper
- `examples` : native C examples
- Features:
- native examples for triangle rendering
- basic native swapchain integration
- concept of the storage hub
2019-03-05 20:59:50 +00:00
- basic recording of passes and command buffers
2019-03-05 12:59:01 +00:00
- submission-based lifetime tracking and command buffer recycling
- automatic resource transitions