This is intended to help developers new to wgpu or to graphics debugging
quickly recognize in a debugging tool which items are wgpu-generated, as
opposed to either part of their program or part of the platform graphics
system.
I also removed existing marker-like text such as leading underscores and
angle brackets.
* Use EGL surfaceless platform when windowing system is not found
Falling back to egl::DEFAULT_DISPLAY usually results in X11 EGL platform being picked and then rejected because of unavailability on a head/GPU-less system. EGL_PLATFORM_SURFACELESS_MESA works with both radeonsi and llvmpipe/swrast when Xorg/Wayland sockets are being hidden from application. Needs to be tested in a truly GPU-less environment such as CI it is required to run in. Addresses #1551
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Set backend for capture by environment variables
Useful for testing surfaceless
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Check for EGL_MESA_platform_surfaceless extension before using surfaceless platform
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Format
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Unify types for GLES config tiers
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Remove red.png
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Enable GL backend for CI
* Bump outliers count for skybox_etc2 due to llvmpipe test (102)
* Add SURFACE_TYPE PBUFFER_BIT requirement to off-screen surface tier
* Re-nix GL Backend on CI
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
* Support to create surface from visual on Windows, add mpo(Multiple Plane Overlay) feature to AdapterInfo
* Expose create_surface_from_visual method
* Fix code style
* Make code more concise
* Revert mpo from AdapterInfo
* Metal: Correctly identify ASTC and EAC/ETC2 support
* Metal: Correctly expose ASTC / BC / EAC/ETC2 compressed texture support
* Metal: Only call supports_family when supported, and use Apple6 for ASTC check
* Identify Apple M1 GPU as integrated
* metal: Call has_unified_memory conditional on OS version
Fall back to current low_power implies integrated GPU for older OSes.
* CLEAR_COMMANDS extension is now more of a window into wgpu zero-init
this has mostly implications on the constraints, but also allows a more leaky documentation which makes sense for this non-standard function as there is no other place to look it up
* clear_texture via renderpasses wip
* 3D depth textures are no longer allowed, volumes are always cleared via CPY_DST
* cleanup texture's clear_views
* rename CLEAR_COMMANDS to CLEAR_TEXTURE
* separate clear_texture into reusable & more descriptive parts
* texture clear views are now created ahead of time
* discarded surface fixup goes through new clear_texture method now
* onq ueue texture initialization now goes threw clear_texture
pending inits need to store Stored textures now though, causing more ref count bumping
* texture init on queue_write_texture now also goes through new clear_texture
* transfer functions on commandbuffer use now new texture init route
* merge collect_zero_buffer_copies_for_clear_texture into clear_texture_via_buffer_copies
* clear functions now take TextureInitRange
* Fix clippy lints
* command_encoder_clear_texture no longer takes write lock on texture
* TextureClearMode encodes now is_color
* code cleanup, mostly about `use`
* Handle volume textures in clear_texture_via_render_passes properly
* texture clear no longer requires id::Stored
* init tracking fixes for volumes and init on partial subresource writes
* texture creation enforces COPY_DST only if absolutely necessary
* unrolled functional chain, reduce unsafe scope size
* fix clippy lints
* clear_texture test no longer creates 1D textures
see #2323
* 3D textures are no longer cleared as render target since this isn't supported on Metal
* fix deno building issue, fix formatting
* TextureInner::Surface can now be zero initialized
Fixes:
The Vulkan spec states: messageType must be a valid combination of VkDebugUtilsMessageTypeFlagBitsEXT values
Full message:
VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter(ERROR / SPEC): msgNum: -553000032 - Validation Error: [ VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter ] Object 0: VK_NULL_HANDLE, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xdf09e3a0 | vkCreateDebugUtilsMessengerEXT: value of pCreateInfo->messageType contains flag bits that are not recognized members of VkDebugUtilsMessageTypeFlagBitsEXT The Vulkan spec states: messageType must be a valid combination of VkDebugUtilsMessageTypeFlagBitsEXT values (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter)
Objects: 1
[0] 0, type: 3, name: NULL
* Add feature gated 16-bit normalized texture support
Fixes#1934
* Query format properties only once
* Prevent supports_format from erroneously reporting false if the format wasn't queried
* Assert that 16bit norm formats also support on vulkan
* Add storage to TextureFormatInfo for 16-bit norm formats now that we check for support
This wasn't being done even if the VK_EXT_depth_clip_enable was present
causing validation errors when requesting DEPTH_CLIP_CONTROL in the
device.
Strangely this was being done for raw calls to `wgpu_hal::Adapter::open`
because it calls `physical_device_features` and then
`from_extensions_and_requested_features`.
* Introduce SamplerBindingType enum and fix bug in validation
This matches the WebGPU spec more closely and also lets us implement the
validation as it's written in the spec[1]. This fixes a bug which
previously prevented the "shadow" example from running in Firefox.
Previously the validation would check whether the filtering was
appropiate even if it was a comparison sampler. This didn't matter when
running the shadow example natively since the example was setting
`filtering: true` in addition to `comparison: true`. But this failed
when running through a browser since there the used WebIDL has the
proper enum representation and eventually resulted in `filtering: false`
being passed to wgpu-core which would then fail validation.[2]
[1]: https://gpuweb.github.io/gpuweb/#bind-group-creation
[2]: 674b6582ba/dom/webgpu/ipc/WebGPUChild.cpp (L502-L513)
* Fix remaining examples
* Fix deno_webgpu
* Creation of max compute workgroup size limits
* Implemented for Vulkan and Dx12
* Follow up of gfx-rs/wgpu#1808
* Check if current dispatch operation is under the limit
* Typos and some forgotten fixes
* Port to GLES
* Port to Metal with default limits
* Change Vulkan max_workroup_size_per_dims to pick the min of the reported dimensions
Co-authored-by: Dzmitry Malyshau <kvark@fastmail.com>
Co-authored-by: Dzmitry Malyshau <kvarkus@gmail.com>
Currently the configure function reuses the surface texture if it
already exist, and will call Glow::Context::tex_storage_2d to
reconfigure the texture. However doing so on an already configured
texture will cause the browser warning:
WebGL warning: texStorage(Multisample)?: Specified texture is immutable.
and will NOT apply the new configuration such as new dimensions.
Co-authored-by: Nicklas Warming Jacobsen <nwj@skybox.gg>
* new test for clearing textures of all formats
* clear_texture is now always implemented in wgpu-core instead of wgpu-hal
* add 1D/array/volume texture to clear_texture test
* set mip_level_count to 1 for D1 textures in clear_texture test
* fix warning & clippy lints
* Fix web build
* [pr feedback] fix potentially skipped resource transition, fix wrong mip size for texture clear
* collect_zero_buffer_copies_for_clear_texture aligns rows now properly
* Do MTL feature check for Depth Clamping
(cherry picked from commit ae6e83c3b2e695918ffcd8bbf7ce3a1b32e2b36e)
# Conflicts:
# wgpu-hal/src/metal/adapter.rs
* make feature support check conform
* clean code
* avoid same featureset checks multiple times
* cargo fmt'ed