src/libANGLE/renderer/wgpu/wgpu_helpers.cpp


Log

Author Commit Date CI Message
Liza Burakova 718cdb91 2025-09-08T15:32:34 [WebGPU] Set ReadPixels to use context's command encoder. This change modifies ContextWgpu::getCurrentCommandEncoder() such that it now ends a render pass if there's an active one, ensures a command encoder is created, then sets an outHandle command encoder. This streamlines a lot of repetitive calls when getting the command encoder. This change also modifies ImageHelper::readPixels such that it now gets the command encoder from the context instead of making its own. This ensure that when the queue is submitted for a read call, that any draw/clear/etc calls in the queue are also submitted for a texture so that a read call can properly read from the texture. Bug: angleproject:438268609 Change-Id: Iec6d7f7ca27c7640cc8bdb42da53f64e4836dc5a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6923328 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Liza Burakova 778969f2 2025-08-28T15:54:35 [WebGPU] Fix ImageHelper::flushSingleLevelUpdates This change modifies ImageHelper:flushSingleLevelUpdates to only send a flush command to the context once, instead of in each iteration of the loop if there are multiple texture uploads. This also means that the last texture upload is guaranteed to be flushed, as otherwise that texture could be staged in the queue, but a different command could redefine texture levels which would delete the underlying texture handle but not the command queued for that texture. Bug: angleproject:438268609 Change-Id: I2d49b15fc921829175e99bdb550dddbd81179061 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885223 Commit-Queue: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Tom Sepez 25390156 2025-08-21T00:13:19 Suppress unsafe buffers on a file-by-file basis in src/ [1 of N] In this CL, we suppress many files but stop short of actually enabling the warning by not removing the line from the unsafe_buffers_paths.txt file. That will happen in a follow-on CL, along with resolving any stragglers missed here. This is mostly a manual change so as to familiarize myself with the kinds of issues faced by the Angle codebase when applying buffer safety warnings. -- Re-generate affected hashes. -- Clang-format applied to all changed files. -- Add a few missing .reserve() calls to vectors as noticed. -- Fix some mismatches between file names and header comments. -- Be more consistent with header comment format (blank lines and trailing //-only lines when a filename comment adjoins license boilerplate). Bug: b/436880895 Change-Id: I3bde5cc2059acbe8345057289214f1a26f1c34aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6869022 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Liza Burakova 03068e0c 2025-08-20T17:36:22 [WebGPU] Implement direct copy for images. This CL implements CopyImage specifically in cases where the source is the same size and format as the destination. Bug: angleproject:438268609 Change-Id: Icf5f3685bb2f49874d996883c839515314f1c189 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6842317 Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Matthew Denton 243ebfa7 2025-06-16T16:07:06 WebGPU: Allow glReadPixels from non-base mip levels. Before, the WebGPU backend always read from the base level of the texture attached to the current framebuffer. Bug: angleproject:42267090 Change-Id: Ibe5b8575f6fa90c1942ba566485b6175ee10f808 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6634558 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Matthew Denton <mpdenton@chromium.org>
Matthew Denton 005336e4 2025-06-11T17:17:16 WGPU: Basic texture cubes Allows uploading to texture cube faces and sampling from them in shaders using samplerCube. Bug: angleproject:420782526 Change-Id: I45d4370fcc418f39afb225114d13632a78c7c200 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6593999 Reviewed-by: Liza Burakova <liza@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Geoff Lang 3cf7a604 2025-05-17T19:39:08 WebGPU: Add extensions for importing external textures Add EGL_ANGLE_device_webgpu which exposes the adapter and device used by ANGLE internally. Add EGL_ANGLE_webgpu_texture_client_buffer which allows importing external WGPUTexture handles if they share the same device as ANGLE (queried from EGL_ANGLE_device_webgpu). Bug: angleproject:418022112 Change-Id: I0683d36b84a0f8e0e9b68a5ec0d3aa8b7a95152c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6553063 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 70b90f22 2025-05-09T16:51:31 WebGPU: Use the C API only from the proc table Define WGPU_SKIP_DECLARATIONS so that errors are generated when using the global c or cpp functions. The default proc table getter requires the cpp API is visible. Hide this in a new wgpu_proc_utils so the rest of the WebGPU backend cannot see those APIs. Bug: angleproject:342213844 Change-Id: Ia1e9bfd25b0bb538cebeaa0efe7b9d2eeabc990d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6534317 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Geoff Lang 3158d638 2025-05-06T17:08:56 WebGPU: Store the WebGPU proc table in wrappers Instead of relying on the global WebGPU functions, pass the proc table to the object wrappers. Bug: angleproject:342213844 Change-Id: I79a5e819ffac5b366fed0a159a6cef116b5e82b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6514676 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Matthew Denton 56becf05 2025-05-16T16:58:34 WGPU: texSubImage2D() should mark textures as dirty TextureWgpu now observes its ImageHelper's edits to staged subresources and notifies its observers (Texture) that it has changed, ensuring TextureWgpu::syncState() is called before draw if glTextSubImage2D() was called earlier. Also ends the current render pass when flushing subresource updates, otherwise if the texture is being used by the current webgpu::CommandBuffer (staged render pass commands), the texture may be updated before the staged commands are actually submitted to the GPU. Bug: angleproject:389145696 Change-Id: I07db566fca970e877a0d3faa3ceb02f8425c799a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6502676 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Matthew Denton 96c9f065 2025-05-15T19:22:29 WGPU: Flip y for the default framebuffer Bug: angleproject:389145696 Change-Id: I0d527ad3dc24dbca7e9d914b03edacdc257a568f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6477137 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Geoff Lang 147f4810 2025-05-05T16:33:19 WebGPU: Use WebGPU C API for Display and error utils Bug: angleproject:414831373 Change-Id: I56f90e453a746399c65956cc73eb4fcb020bcb5e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6512148 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org>
Geoff Lang 1faf6ef2 2025-05-05T15:18:58 WebGPU: Use WebGPU C API for Programs and Buffers Bug: angleproject:414831373 Change-Id: I773f26483f53957bdfb8321b2a557df7febb376c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6512147 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang cf0565f2 2025-05-14T17:59:41 WebGPU: Pack render pass descriptors The render pass descriptors stored in FramebufferWgpu contained references to textures that were fragile and depended on the RenderTargetCache keeping the texture views alive. Refactor the desc so that it does ref counting like the cpp interface and clean up some FramebufferWgpu logic around copying descs. Bug: angleproject:414831373 Change-Id: Ibea96e013474cc43aa30909b596b8898ebccef98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6546256 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Geoff Lang 69841d3c 2025-04-30T23:55:16 WebGPU: Use WebGPU C API for Textures and Framebuffers Bug: angleproject:414831373 Change-Id: I6b547a726b22e8eb5d407e2d6340b1d18bf39033 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6503024 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang a3f6a9c8 2025-05-05T10:16:53 WebGPU: Don't call destroy on null textures .Destroy requires a valid texture. Bug: angleproject:414831373 Change-Id: I9d586f38a3f1b910b4c14552d3c9a6b43b4a5e22 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6512850 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Matthew Denton f4ff9241 2025-04-08T14:37:08 WGPU: add utils for converting between GLSL and WGSL types ...specifically those related to textures and samplers. Bug: angleproject:389145696 Change-Id: If3bec56b70c04443928ef0d4e1e1a40b5c578cc0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6441818 Reviewed-by: Liza Burakova <liza@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Liza Burakova 5024ccef 2025-03-25T11:37:19 WebGPU: Emulate line loops with primitive restarts Bug: angleproject:383356846 Change-Id: Iab1d658cb3c5e32f88241f6757d1c2e5a84bf8ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297524 Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Matthew Denton f38a081c 2025-03-06T12:34:20 WGPU: when copying to mip levels, copy correct size Bug: angleproject:389145696 Change-Id: I78a2a573de371c1439033ef4e43f84906b076d41 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333237 Reviewed-by: Liza Burakova <liza@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Yuly Novikov 4eb4165b 2025-03-07T10:24:05 Roll third_party/dawn/ 8119dbd27..7a8946456 (244 commits; 3 trivial rolls) Need https://dawn-review.googlesource.com/c/dawn/+/229494 to roll https://chromium-review.googlesource.com/c/angle/angle/+/6334483 vulkan_platform.h:152:9: error: 'VK_USE_PLATFORM_XLIB_KHR' macro redefined https://dawn.googlesource.com/dawn.git/+log/8119dbd27471..7a8946456d49 $ git log 8119dbd27..7a8946456 --date=short --no-merges --format='%ad %ae %s' 2025-03-07 cwallez [tint] Add support for binding_array to the IR validator 2025-03-07 hitawala [stream] Check for size invalidity before reserving in Stream::Read 2025-03-07 cwallez Reland "[dawn] Fix detection of __builtin_assume for DAWN_ASSERT" 2025-03-06 dawn-autoroll Roll ANGLE from 99ebd28ad246 to 0cdbc7814e59 (4 revisions) 2025-03-06 jiawei.shao Remove the redefinition of dawn::native::Vulkan::ClampFragDepthArgs 2025-03-06 jiawei.shao Vulkan: Implement PreferNotUsingMappableOrUniformBufferAsStorage() 2025-03-06 rharrison [tint][ir][fuzz] Re-enable SubgroupMatrix in IR binary 2025-03-06 shrekshao [Compat] Remove suppressions for ReadOnlyDepthStencilAttachmentTests 2025-03-06 thomasanderson [X11] Don't redefine VK_USE_PLATFORM_XLIB_KHR 2025-03-06 lokokung [dawn][emscripten] Fix Emscripten bindings for compilation messages. 2025-03-06 lokokung [dawn][native] Add validation for Infinities. 2025-03-06 lokokung [dawn][headers] Update wgpu::Surface APIs to match upstream. 2025-03-06 bsheedy [tools] Convert glob to use dependency injection 2025-03-06 cwallez [dawn][native] Track the set of BGLInternal separately from BGL. 2025-03-06 amaiorano tint: make PreventInfiniteLoops count down from uint32::highest() down to 0 2025-03-06 dsinclair Revert "Vulkan: Allow setting multiple `MemoryKind` bits" 2025-03-06 ynovikov Reland "Roll reclient, siso; update related DEPS to match Chromium" 2025-03-06 dawn-autoroll Roll ANGLE from 1a0c9db3748a to 99ebd28ad246 (8 revisions) 2025-03-06 cwallez Revert "[dawn] Fix detection of __builtin_assume for DAWN_ASSERT" 2025-03-05 zhaoming.jiang Dawn: Remove adapter from shader compilation request 2025-03-05 jiawei.shao Skip the test CreateBufferOOMWithValidationError when no validation 2025-03-05 lokokung [dawn][native] Make error scopes thread local. 2025-03-05 dawn-autoroll Roll ANGLE from 6b10ae3386b7 to 1a0c9db3748a (3 revisions) 2025-03-05 mohamedkhairy0101 tint: Improve error message for module-scope function calls 2025-03-05 mohammedashraf4599 add BOM error message 2025-03-05 cwallez [dawn] Fix detection of __builtin_assume for DAWN_ASSERT 2025-03-05 cwallez [tint] Add binding_array indexing to the resolver. 2025-03-05 kylechar Add SlabAllocator::DeleteEmptySlabs() 2025-03-05 dawn-autoroll Roll ANGLE from 73992d71f9d1 to 6b10ae3386b7 (7 revisions) 2025-03-05 shrekshao Remove enabling core-features-and-limits in backends 2025-03-04 lokokung [dawn][headers] Removes default UTF16 support. 2025-03-04 lokokung Reland "[dawn][headers] Remove obsolete ifdefs." 2025-03-04 jwata build: GN builds use Siso without Reclient in tools/setup-build script 2025-03-04 jrprice [vulkan] Fix subgroup matrix config gathering 2025-03-04 dawn-autoroll Roll ANGLE from bd8bc1055ecd to 73992d71f9d1 (1 revision) 2025-03-04 chrome-branch-day Activate dawn M135 2025-03-04 beaufort.francois Remove maxInterStageShaderComponents limit 2025-03-04 beaufort.francois Refactor Bindgroup constructors 2025-03-04 cwallez [tint] Add binding_array to the resolver 2025-03-04 cwallez Revert "[dawn][headers] Remove obsolete ifdefs." 2025-03-04 lokokung [dawn][headers] Remove obsolete ifdefs. 2025-03-03 zhaoming.jiang Dawn: Cache limits in AdapterBase 2025-03-03 dawn-autoroll Roll ANGLE from 19b35fcbff31 to bd8bc1055ecd (5 revisions) 2025-03-03 lokokung [dawn][headers] Adds extension support for UTF-16 in compilation message. 2025-03-03 jrprice [spirv] Only add explicit layout decorations on types that need them 2025-03-03 kainino [emscripten] Add emsdk to DEPS for Wasm builds 2025-03-03 lokokung [dawn][wire] Adds Dawn wire invalid extension struct and handling. 2025-03-03 jrprice [dawn] Validate workgroup size for subgroup matrix 2025-03-03 jrprice [inspector] Reflect the use of a subgroup matrix 2025-03-03 jrprice [tint] Reject non-compute shaders that use subgroup matrices (...) 2025-02-18 zhjiang Dawn: Tighten the scope of ScopedTintICEHandler 2025-02-18 dawn-autoroll Roll DirectX Shader Compiler from 6b68f3b5832c to fcbd2a184294 (2 revisions) 2025-02-18 jiawei.shao Replace `PipelineCompatibilityToken(0)` with `kExplicitPCT` 2025-02-18 yulong.fs fix memory address value passed to emwgpuDelete() 2025-02-18 dsinclair [spirv-reader][ir] Implement OpConvertFToU 2025-02-18 kainino dawn::DynamicLib: Leak all DLLs on Windows ASan builds 2025-02-18 dsinclair [spirv-reader][ir] Implement ConvertFToS 2025-02-18 petermcneeley Fix for assignment outside the range of representable type 2025-02-18 kainino Refactor TINT_ASAN_ENABLED into common DAWN_ASAN_ENABLED() 2025-02-18 gman Add a trace option to the Metal Backend 2025-02-18 dawn-autoroll Roll ANGLE from ba3dcfa4670d to 8dda514cb833 (3 revisions) 2025-02-18 dsinclair Mark function unused. 2025-02-18 dawn-autoroll Roll DirectX Shader Compiler from 20950d662f4d to 6b68f3b5832c (1 revision) 2025-02-17 dawn-autoroll Roll ANGLE from e0332c861004 to ba3dcfa4670d (1 revision) 2025-02-17 dawn-autoroll Roll vulkan-deps from 2a09ac22553e to 5d08bc0b0e23 (6 revisions) 2025-02-17 yulong.fs fix buffer destroy 2025-02-17 dawn-autoroll Roll ANGLE from 51d2561b5a6b to e0332c861004 (1 revision) 2025-02-17 lehoangquyen D3D: remove dead code used by the old external image API 2025-02-16 dawn-autoroll Roll Depot Tools from 77a800d7294d to 7a0dbd207449 (59 revisions) 2025-02-16 jiawei.shao Enable creating pipeline layout with null bind group layout by default 2025-02-16 dawn-autoroll Roll vulkan-deps from 2365826a66b2 to 2a09ac22553e (1 revision) 2025-02-15 dawn-autoroll Roll vulkan-deps from cc6490ed63e7 to 2365826a66b2 (5 revisions) 2025-02-15 dawn-autoroll Roll ANGLE from bef478f54e6e to 51d2561b5a6b (2 revisions) 2025-02-15 jie.a.chen Fix CooperativeMatrix extension index 2025-02-14 dawn-autoroll Roll ANGLE from 7afa2345f8d2 to bef478f54e6e (3 revisions) 2025-02-14 dsinclair [spirv-reader][ir] Register names instead of using new 2025-02-14 dsinclair [spirv-reader][ir] Support OpBranchConditional after OpSelectionMerge 2025-02-14 dawn-autoroll Roll vulkan-deps from 5cc3a63e8fdb to cc6490ed63e7 (5 revisions) 2025-02-14 gman Emit WGSL errors as part of GPUValidationError 2025-02-14 jimblackler [Kotlin] Update template now WGPUChainedStructOut has been removed. 2025-02-14 dawn-autoroll Roll ANGLE from cd7f92e1ed57 to 7afa2345f8d2 (6 revisions) 2025-02-13 petermcneeley Substitute overrides in IR (vk) 2025-02-13 shaoboyan [Spirv] Remove clamp_frag_depth attribute in Options 2025-02-13 dsinclair [spirv-reader][ir] Handle OpBranch instruction 2025-02-13 jrprice [ir] Add builtin struct support to the protobuf 2025-02-13 rharrison [tint][ir][val] Check Samplers & Textures address space 2025-02-13 jrprice [tint] Add flag for WGSL internal structures 2025-02-13 rharrison [tint] Replace unsafe casting with shift & mask in eval.cc 2025-02-13 rharrison [tint] Narrow warning suppression in table_data.h 2025-02-13 bajones Loosen Viewport validation requirements 2025-02-13 shrekshao [Compat] Add compat-min-es31 tags in expectations 2025-02-13 gman Remove old subgroups from dawn.node 2025-02-13 dawn-autoroll Roll ANGLE from 19c5293e1347 to cd7f92e1ed57 (9 revisions) 2025-02-13 dsinclair [spirv-reader][ir] Add names for functions and function parameters. 2025-02-13 dsinclair [spirv-reader][ir] Support names. 2025-02-13 dsinclair [spirv-reader][ir] Fixup mixed sign binary methods. 2025-02-13 dawn-autoroll Roll vulkan-deps from a88fd25a6a0d to 5cc3a63e8fdb (17 revisions) 2025-02-13 dsinclair Add suppressions for compat failures. 2025-02-13 jrprice [spirv] Emit Matrix*SignedComponents operands 2025-02-13 jrprice [tint] Subgroup matrix component types do not have to match Created with: roll-dep third_party/dawn Bug: chromium:345261080 Change-Id: I9ee360934bcbd838d682ffabe5029cc7baecec9b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333617 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Liza Burakova cb81b2b2 2025-02-27T16:52:29 Set mMappedState offset and size to actual mapped offset + size Bug: angleproject:383356846 Change-Id: I68a4b4d3cb4c29071c9fb593b19fb55ded010950 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6308949 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 91deaea3 2025-02-13T13:57:37 Roll third_party/dawn/ 1eca38fa5..8119dbd27 (1982 commits; 30 trivial rolls) https://dawn.googlesource.com/dawn.git/+log/1eca38fa5236..8119dbd27471 $ git log 1eca38fa5..8119dbd27 --date=short --no-merges --format='%ad %ae %s' 2025-02-12 zhuangxu Set MacOS deployment target to 11.0 when building with CMake 2025-02-12 dsinclair Revert "Remove stale WebGPU Compat CTS expectations" 2025-02-12 rharrison [tint][ir][fuzz] Add missing capability to tint::hlsl::writer::IRFuzzer 2025-02-11 shrekshao [Compat] Remove gles min31 end2end suppressions 2025-02-11 shrekshao [Compat] Fix toggle string for UseBlitForRG11B10UfloatTextureCopy 2025-02-11 rharrison [tint][ir][val] Add operand and result checks for MemberBuiltinCall 2025-02-11 rharrison [tint][ir][val] Check InstructionResult->Instruction is inst 2025-02-11 jrprice [node] Support subgroupMatrixConfigs query in dawn.node 2025-02-11 jrprice [vulkan] Enable subgroup matrix feature 2025-02-11 ynovikov Remove stale WebGPU Compat CTS expectations 2025-02-11 ynovikov Remove stale WebGPU CTS expectations 2025-02-11 dawn-autoroll Roll ANGLE from e746fb068fd3 to 19c5293e1347 (5 revisions) 2025-02-11 jrprice [metal] Enable subgroup matrix feature 2025-02-11 jrprice [dawn] Add SubgroupMatrixConfigs to adapter info 2025-02-11 kylechar Skip setting Vulkan object labels 2025-02-11 dsinclair [spirv-reader][ir] Add derivative operations. 2025-02-11 lehoangquyen D3D11: skip waiting on the fence that is owned by the same queue. 2025-02-11 dawn-autoroll Roll vulkan-deps from cd5e835851d1 to a88fd25a6a0d (8 revisions) 2025-02-11 dsinclair [spirv-reader][ir] Cleanup duplicate argument code. 2025-02-11 jrprice [dawn] Add feature for subgroup matrix extension 2025-02-11 dsinclair [spirv-reader][ir] Add support for `OpAny`. 2025-02-11 dsinclair [spirv-reader][ir] Add support for `OpAll` 2025-02-11 dsinclair [spirv-reader][ir] Add support for `OpBitReverse`. 2025-02-11 cwallez [tint] Make type::BindingArray use ArrayCount 2025-02-11 rharrison [tint][ir][val] Add additional checking to builtin calls 2025-02-11 dsinclair [spirv-reader][ir] Support `OpBitFieldUExtract`. 2025-02-11 lehoangquyen D3D11: return error if D3D feature level < 11.0 2025-02-11 shaoboyan Dawn Native: Setup ClampFragDepth offset in Vulkan Backend 2025-02-10 dawn-autoroll Roll ANGLE from c4caed5f649d to e746fb068fd3 (8 revisions) 2025-02-10 gman Compat: Fixup Device Limits 2025-02-10 dsinclair [spirv-reader][ir] Support `OpBitFieldSExtract`. 2025-02-10 dsinclair [spirv-reader][ir] Support `OpBitFieldInsert`. 2025-02-10 brandon1.jones Add Missing Synchronization For D3D12 Shared Buffers 2025-02-10 ynovikov Skip more textureSample tests on WebGPU CTS compat Android 2025-02-10 cwallez [dawn][frontend] Fix error message when @group > maxBindGroups 2025-02-10 dawn-autoroll Roll SwiftShader from 5017ce3c800e to 720189cae847 (1 revision) 2025-02-10 titouan Include tint fuzzers in high-end fuzzer build. 2025-02-10 dsinclair [spirv-reader][ir] Support `OpBitCount`. 2025-02-10 dawn-autoroll Roll ANGLE from 38aa0780bb36 to c4caed5f649d (28 revisions) 2025-02-10 jrprice [spirv] Require Vulkan Memory Model when fuzzing subgroup matrices 2025-02-10 jwata infra: Add project property to $build/siso 2025-02-10 dawn-autoroll Roll vulkan-deps from b4c8dd090b72 to cd5e835851d1 (1 revision) 2025-02-09 ynovikov Skip textureSample tests on WebGPU CTS compat Android 2025-02-09 dawn-autoroll Roll vulkan-deps from dbe0a14ab512 to b4c8dd090b72 (1 revision) 2025-02-08 ynovikov Remove stale WebGPU Compat CTS expectations 2025-02-08 ynovikov Remove stale WebGPU CTS expectations 2025-02-08 ynovikov Generalize Linux NVIDIA WebGPU CTS expectation 2025-02-07 dawn-autoroll Roll vulkan-deps from c32804ca5a39 to dbe0a14ab512 (9 revisions) 2025-02-07 shrekshao [Compat] fix glsl name collisions between stages for handle 2025-02-07 shrekshao Compat suppress min es31 failure tests (...) 2024-08-15 rharrison [tint][ir][val] Improve checks on Returns 2024-08-15 petermcneeley [tint] Minor follow-up fix for insert before 2024-08-15 dawn-autoroll Roll ANGLE from 2003e06230b1 to 83ca89e58cef (6 revisions) 2024-08-15 dsinclair Allow marking expectations as INVALID. 2024-08-15 bsheedy Suppress additional Linux/NVIDIA failures 2024-08-15 chouinard Generate missing hlsl e2e tests 2024-08-15 petermcneeley [tint] MSL texture array negative integer clamp 2024-08-15 dsinclair Remove the CTS cache code 2024-08-15 amaiorano Generated missing tint e2e tests for ir.dxc.hlsl 2024-08-15 jiawei.shao Tint: Add validations on the type of `clip_distances` 2024-08-15 dawn-autoroll Roll ANGLE from 6fddb18d77a3 to 2003e06230b1 (6 revisions) 2024-08-15 jiawei.shao Tint: Add WGSL extension and built-in variable `clip_distances` 2024-08-15 jiawei.shao Remove `DeviceBase::ForceSetToggleForTesting` 2024-08-15 jiawei.shao Rename `BufferBase::GetUsage` and `BufferBase::GetUsageExternalOnly` 2024-08-15 bsheedy Suppress 16" Macbook failures 2024-08-14 rharrison [tint][ir][val] Check swizzles are well formed 2024-08-14 chouinard [tint] Implement quadSwapX, Y and Diagonal 2024-08-14 amaiorano [hlsl] Emit mip level 0 for storage textures 2024-08-14 amaiorano Regen ir.fxc.hlsl files 2024-08-14 jrprice [benchmark] Add --check-stale option 2024-08-14 dawn-autoroll Roll vulkan-deps from c297ee8a1d20 to 7660e21e64db (3 revisions) 2024-08-14 amaiorano Fix DXC roll 2024-08-14 dawn-autoroll Roll ANGLE from 5967afe70699 to 6fddb18d77a3 (3 revisions) 2024-08-14 dneto [tint] validate clamp const low <= const high when first arg is runtime-eval 2024-08-14 chouinard [tint] Implement quadBroadcast 2024-08-14 dawn-autoroll Roll ANGLE from fdd26da99a12 to 5967afe70699 (6 revisions) 2024-08-14 jrprice [benchmark][msl] Flatten bindings 2024-08-14 jrprice [benchmark] Split generated shaders into multiple lines 2024-08-14 jiawei.shao Don't check adapter nullability in the constructor of DeviceBase 2024-08-14 jrprice [benchmark] Generate map directly 2024-08-14 jrprice [benchmark] Convert SPIR-V when generating header 2024-08-14 jrprice [benchmark] Check in the generated header 2024-08-14 jrprice [benchmark] Remove spv_reader and wgsl_writer deps 2024-08-13 enga Add DeviceGetAdapter and AdapterGetInstance to client_side_commands 2024-08-13 jrprice [benchmark] Don't convert SPIR-V to WGSL at init 2024-08-13 rharrison [tint][ir][val] Check disards in validator 2024-08-13 chouinard [tint] Implement subgroupShuffleXor, Up and Down 2024-08-13 senorblanco Fix texture-only arg in combine samplers transform. 2024-08-13 jrprice [spirv] Remove ast_generate_bindings 2024-08-13 dawn-autoroll Roll vulkan-deps from 77d583f37170 to c297ee8a1d20 (3 revisions) 2024-08-13 jrprice [tint] Remove the quantizeToF16 AST polyfill 2024-08-13 jrprice [spirv] Remove AST backend 2024-08-13 jrprice [loopy] Switch to IR version of SPIR-V backend 2024-08-13 shrekshao [Compat] Use @size attribute for glsl pad struct 2024-08-13 jrprice Reland "[tint][benchmark] Generate depfile for inputs" 2024-08-13 jrprice [spirv] Move E2E expectations to default paths 2024-08-13 jrprice [spirv] Remove AST E2E expectations 2024-08-13 jrprice [tint] Only allow --use-ir with WIP IR backends 2024-08-13 dawn-autoroll Roll ANGLE from f8fc8ac36280 to fdd26da99a12 (4 revisions) 2024-08-13 dawn-autoroll Manual roll vulkan-deps from a5d4d42457c3 to 77d583f37170 (8 revisions) Created with: roll-dep third_party/dawn Bug: angleproject:396213611 Change-Id: I124bbd59dccd14d8609c37ef62ccdd4455897b2c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6270256 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 9f8d7cc2 2025-01-23T13:27:19 WebGPU: Stream incompatible vertex and index data. Support reading back index and vertex buffers to stream incompatible source data. For now this includes: * Non-multiple-of-4 stride vertex data * Stride not a multiple of the type size * Unsigned byte indices Fix fallback formats so that all GLES formats have a fallback. Fix CopyToFloatVertexData writing the alpha channel as Float32One with a static_cast which converted Float32One (an integer) to a float instead of bit-casting. Bug: angleproject:368602384 Change-Id: I7eb1ba7ad1ec4292060c18de22f5948136cbb0a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6194556 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang c94c37c1 2024-09-23T17:22:27 WebGPU: Skip ReadPixels if texture creation failed If texture creation failed due to an unsupported format, ReadPixels would crash calling a null conversion function. Mark this case as UNIMPLEMENTED for now. Bug: angleproject:42266974 Change-Id: Ifa34d9db3d0d14e8e382c2323b4e70d2b1a7d2a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5889090 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Liza Burakova ca2e588b 2024-09-12T14:20:33 WebGPU: Add support for depth/stencil clears This CL also adds helper methods to create webgpu depth/stencil attachments for a render pass descriptor, as well as depth/stencil attachment images. Bug: angleproject:42267012 Change-Id: Iebef99ba34db2e50f56449d0737b3dbb03b90f2e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5750001 Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Liza Burakova 3e4fa128 2024-08-05T16:20:30 Store ImageHelper's queue by mip levels. This change converts ImageHelper's mSubresourceQueue to store a vector of updates for each mip level. This allows updates to be flushed per mip level. This also adds a call in the RenderTargetWgpu to flush updates such that now when a framebuffer is flushing updates to color attachments the associated render target ensures that only updates associated with its mip level are flushed. Bug: angleproject:42267012 Change-Id: I1abdbc842cf18b1bd897037bf11aeea9c6d09e14 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5759469 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Geoff Lang cab7d1b6 2024-07-30T21:19:15 WebGPU: Obey buffer alignment rules WebGPU buffers require a size aligned to 4 bytes and map buffer offsets aligned to 8 bytes. Hide this requirement in The BufferHelper class by doing the apropriate offsets during buffer creation and map calls. This allows many dEQP tests to run without crashing due to WebGPU buffer creation errors. Bug: angleproject:356399840 Bug: angleproject:42267091 Change-Id: Id71c3b5db31aa712d5a88631efa4897d6205a41d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748443 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 641bc04a 2024-07-30T21:25:44 WebGPU: Use the correct source format for ReadPixels ReadPixels was using the format of the destination buffer which works correctly for RGBA8 -> RGBA/UNSIGNED_BYTE but runs the wrong conversion functions for other formats. Bug: angleproject:356399840 Bug: angleproject:42267090 Change-Id: I7c46add3f643017f454136135afef697847a2383 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748446 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 1953c606 2024-07-30T21:28:13 WebGPU: Fix ReadPixels from window surfaces. The intended/actual formats were not initialized in this code path and the created swap chain texture did not have the usage flags needed for copying to a buffer for ReadPixels. Bug: angleproject:356399840 Bug: angleproject:42267090 Change-Id: I8e4279eedb2b23f0d2ed690ccee086ae115969c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5748447 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Liza Burakova 4f498eaa 2024-07-24T14:31:23 WebGPU: Add more format support This CL adds a new FormatTable class that initializes webgpu texture and vertex formats. It also adds this class to the display so it can be used in the ImageHelper. This CL changes the previously hardcoded RGBA8 texture format that was initially used when creating textures to use the format passed into the methods. Bug: angleproject:344814096 Change-Id: I768b85335329116496dbf721aac54d1137aaae9f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5660397 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Geoff Lang 85e2e6a9 2024-05-08T12:31:37 WebGPU: Add Window and Pbuffer surfaces. Bug: angleproject:342213844 Change-Id: I58465bdf895b4bab63ec3c74e326c6be4827bf60 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5525974 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Liza Burakova 657c8c0a 2024-06-04T15:16:20 Add optimization to defer clear calls. This change adds a new SubresourceUpdate struct that will hold either an update for a clear call or a texture upload in an ImageHelper's update queue. It also adds logic to defer clear calls similar to Vulkan's, where clears are deferred if there is not an active render pass. Draw based clears are not yet supported, so the optimization does not handle those yet. Bug: angleproject:8582 Change-Id: I3ee010fa64745871835d53ce0ccb56e3fdd74550 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5554984 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Liza Burakova 36cd4c1f 2024-05-08T12:27:22 Adding basic readPixels. This change adds to methods in ImageHelper to read texture data. It also implements FramebufferWgpu::readPixels to get the parameters and read the texture data from an ImageHelper that's stored in mRenderTargetCache. Bug: angleproject:8653 Change-Id: I349ed8a0ae3d8d0e187c658f3402c4f8cac23eb8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5441353 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Liza Burakova 1d0ef518 2024-05-07T16:56:43 Fixing glClear tests. This CL makes a few changes to fix up the basic glClear test RGBA8Framebuffer, as well as adding a test that uploads a texture before clearing a RGBA8 framebuffer. It moves the wgpu::RenderPassDescriptor(RPD), as well as helper methods for comparing RPDs from the context to the framebuffer. The color attachments that are created in when FramebufferWgpu::clear is called are also stored in the framebuffer now as well. This CL also changes texture creation to use the RGBA8Unorm format instead of RGBA8Uint format. It also adds the wgpu viewFormats parameter to an ImageHelper. Future formats support is still TBD. Bug: angleproject:8582 Change-Id: Idfc4182eb4d6de8a771f2f91d337564ee71df010 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5503549 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Liza Burakova ead98ed9 2024-05-02T14:04:14 Implement basic texture upload. This change modifies ImageHelper's methods to upload textures to fix webgpu API calls, as well as fully implements uploading texture data via TextureWgpu::setImage for RGBA8 formats. Bug: angleproject:8457 Change-Id: I1c5be3d79ad996a709086ca7157cca6229a336ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5398002 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang f4485224 2024-04-05T10:29:23 WebGPU: Implement glBufferData and glBufferSubData Define several usages for WebGPU buffers that map to wgpu buffer usage flags. Maintain a set of buffers by usage and a serial of the one with the most recent data. Defer creation of the buffer as long as possible to take advantage of the WebGPU mapAtCreation flag for data upload. If we ever have to unmap these buffers, staging buffers must be used to upload afterwards. Add some helpers for getting Device and Instance from a gl::Context. Bug: angleproject:8654 Change-Id: Ibb8147119af8a98738fc4d579830a02ccaa1d7c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5426813 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org>
Liza Burakova 0add1163 2024-03-25T11:39:41 Move extent and dimension conversions to wgpu_utils. This change moves some helper methods out of the ImageHelper and wgpu_helpers and into wgpu_utils. Bug: angleproject:8457 Change-Id: I1cc641e4a48eec30519e331b6150e2432d3bc3c4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5392380 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Matthew Denton 1bd82319 2024-03-22T05:00:11 Add RenderTargetWgpu Based on RenderTargetMtl without any multisampling support for now. Bug: angleproject:8582 Change-Id: I4c77e747b341f08a0dd88f507e6d805d34a01d24 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5386899 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Liza Burakova 6c379733 2024-03-21T14:25:52 Add more helper methods for textures. This change adds a DisplayWgpu member variable to ContextWgpu as well as a getter for the display so other objects can access a webgpu device. This change also adds helper methods to translate GL texture information (size, dimension, mip level count, etc.) to webgpu compatible texture information. Bug: angleproject:8547 Change-Id: Ifb2c5d021b1cbb95304a732c57d3250f1731496b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5385574 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>
Liza Burakova 6eaaad7c 2024-02-27T21:24:59 Create ImageHelper. This CL adds a helper class ImageHelper, which acts as a wrapper on webgpu textures that will be used by TextureWgpu. Bug: angleproject:8547 Change-Id: Ia796534c9d3ff0dd24797cc483677cfcbedb1f8c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5317864 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Liza Burakova <liza@chromium.org>