src/libANGLE/renderer/wgpu/wgpu_command_buffer.cpp


Log

Author Commit Date CI Message
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>
Geoff Lang 5d124404 2025-06-17T17:04:12 WebGPU: Fix bind groups leaking in CommandBuffer. Wrap all per-submission member variables in a struct so that we can reset everything at once using the default constructor. This avoids similar leaks in the future. Bug: chromium:413078308 Change-Id: I3f926c82905b73b27d6b751cfe2878a41ced916a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6652290 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang dea162cc 2025-06-09T15:43:05 WebGPU: Finalize command blocks when starting a new one The command buffer abstraction would not finalize blocks of commands when creating a new block, leading to possible infinite loops when processing the commands. Bug: chromium:413078308 Change-Id: Idf4e95a5ccc71f3ddc9a4202e5e000c0e2cd5f87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6629473 Reviewed-by: Liza Burakova <liza@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 ce454fee 2025-04-30T15:24:34 Add RAII wrappers for WebGPU C API objects. To ease the transition, add constructors from the cpp wrappers currently in use. These will be deleted when we have fully moved to the C API. Update the WebGPU CommandBuffer code to use the new wrappers and C API. Bug: angleproject:414831373 Change-Id: I428349d84e1f79725eb836da5bb3d384ae296d75 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6501618 Reviewed-by: Matthew Denton <mpdenton@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang e746fb06 2025-01-23T13:23:30 WebGPU: Implement blending Constant alpha is not handled yet. It needs to be emualted or added to WebGPU. Bug: angleproject:370690274 Change-Id: I5f8402f74ab08345b2f02c18e2d43fa39b2479a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6194554 Reviewed-by: Liza Burakova <liza@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org> Commit-Queue: 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>
Matthew Denton 4a835cf2 2024-11-01T13:31:00 WebGPU: send uniforms to GPU for use in shader Basic uniforms should now be accessible in the shader during a draw call, rather than just via glGetUniform*(). This is unoptimized and creates a new GPU-side copy of all the uniforms, every time any uniform changes. This sets up the bind group layout for a pipeline and sets the bind groups in the renderer pass. Right now these bind groups only contain the default uniform blocks, but in the future will need to contain textures, samplers, and non-default uniform blocks (UBOs). Bug: angleproject:376553328 Change-Id: I50891b81ab2ee374d674213257f76319c0222120 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5980972 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Geoff Lang 0b610712 2024-09-20T12:00:17 WebGPU: Sync index buffers, add indexed draw calls Bug: angleproject:368600230 Change-Id: Ibf1c4921635b525b7650e70ce7dc939e2bad2ebb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5828229 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Liza Burakova bb14aa4d 2024-09-19T11:17:05 WebGPU: set vertex buffers. This change actually sets the vertex attributes that are added to the render pipeline description owned by the context, as well as sets the vertex buffer in the pipeline. Bug: angleproject:359823692 Change-Id: I5e94b357a4e6eadc1bbba54965cef94f90113b4e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5789155 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org>
Geoff Lang b36d94dc 2024-08-02T16:23:03 WebGPU: Implement viewport and scissor Tested using samples. dEQP tests covering viewport and scissor require more shader translation to be completed. Bug: angleproject:0 Change-Id: Ia76f2edeea5a07af1881704a21fafb64ab7df43a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756127 Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 84e54d88 2024-07-22T14:39:22 WebGPU: Add command buffers and renderpass management Add a CommandBuffer class to serialize and replay WebGPU commands. Only Draw and SetPipeline are implemented in this patch. Manage render pass begin and end events due to framebuffer changes and swapping. Handle the color mask dirty bits so that a non-zero color mask will be used. All togther, this is enough to draw a triangle using a hard-coded shader without inputs. Bug: angleproject:0 Change-Id: I0fbf0296563c02c7f0774ad4197b83f4c93c22bb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5731594 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Liza Burakova <liza@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>