|
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>
|
|
f32fa362
|
2025-09-02T16:14:44
|
|
[WebGPU] Add helper methods for streaming indices in syncClientArrays
Bug: angleproject:401499251
Change-Id: I2cab62524ce92a01117282726a3d4de1c266f818
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6438259
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Commit-Queue: Liza Burakova <liza@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
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>
|
|
b4d84458
|
2025-05-23T18:08:19
|
|
Move Buffer from VertexBinding to VertexArray
In later CL we will not taking shared context lock for certain
VertexArray API calls. VertexArray itself is per context, so this sounds
reasonable to do. The main challenge here is a lot of VertexArray
function end up accessing gl::Buffer object, which could be modified by
other shared contexts. In order to safely not taking the shared context
lock, we need to separate out Buffer object out of VertexArray itself so
that these lockless APIs will take VertexArray that does not have access
to buffer.
In this CL, VertexArray is split into two classes: VertexArrayPrivate is
everything in VertexArray except buffers. VertexArray is a subclass of
VertexArrayPrivate and owns all the buffers. Buffer is removed from
gl::VertexBinding class. In order to let back end access to buffers,
VertexArrayImpl holds a weak reference to
VertexArray::mVertexArrayBuffers (which is a vector of buffers).
Further, VertexArrayBufferBindingMask mBufferBindingMask is moved from
VertexArrayState into VertexArray class well, since it tracks which
index has a non-null buffer. The bulk of change are due to the
VertexARrayImpl constructor change, since it now takes
vertexArrayBuffers argument. Other bulk of changes are due to
VertexBinding no long has the buffer, but you need to get it directly
from VertexArray or VertexArrayImpl.
This CL also reverts some of the change in crrev.com/c/6758215 that
mVertexBindings no longer contains kElementArrayBufferIndex.
BYPASS_LARGE_CHANGE_WARNING
Bug: b/433331119
Change-Id: I15f4576f7c5c8d8f4d9c9c07d38a60ce539bfeea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6774702
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
8dca0efe
|
2025-07-21T15:29:10
|
|
Replace VertexArray::DIRTY_BIT_LOST_OBSERVATION with API call
This dirty bit was added so that back end can inspect buffers and set
proper VertexArray::DirtyBitType. The same thing can achieved by add a
virtual function on VertexArrayImpl class. The advantage of virtual
function on VertexArrayImpl is that all back end essentially have the
same implementation and we can just implemented in VertexArrayImpl
instead of duplicate in each back end. The other advantage is after this
CL DIRTY_BIT_BINDING_n and DIRTY_BIT_BUFFER_DATA_n will be well aligned
instead of offset by 1 caused by DIRTY_BIT_LOST_OBSERVATION. The other
motivation of this change is in later CL I want to move
mBufferBindingMask out of VertexArrayState, which means back end will
not have access to it. By using VertexArrayImpl API, I can pass
mBufferBindingMask directly to the back end via function parameter. So,
this CL removed DIRTY_BIT_LOST_OBSERVATION, added
VertexArrayImpl::checkBufferForDirtyBits().
Bug: b/433331119
Change-Id: I5c8cbc9bace63db416e86c2ae3631f74a12b20b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6775986
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
78048112
|
2025-01-15T15:13:14
|
|
Fix IndexRange::vertexIndexCount calculation
Use only one loop.
Avoid redundant primitive restart index parameter.
Avoid calling GetPrimitiveRestartIndexFromType() because the algorithm
relies on the value being numeric_limits<T>::max().
Fixes a bug where primitive restart case would process the value
after first primitive restart twice, once in both for loops. This would
result in incorrect vertexIndexCount.
Fix by removing IndexRange::vertexIndexCount, and instead using
IndexRange::mCount == 0 to signify empty range.
Bug: angleproject:401284933
Change-Id: Ifaeb9949f2e852fb7c5ef80bc47f72bfabba21a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333541
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
3dcf109d
|
2025-04-10T17:19:09
|
|
WebGPU: Refactor syncClientArrays.
This change adds a few helper methods for syncClientArrays
to improve readability
Bug: angleproject:401499251
Change-Id: Ida427f80e07f469b83ff12850169b2110e65743c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6441946
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Commit-Queue: Liza Burakova <liza@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
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>
|
|
bc40362b
|
2025-02-18T13:24:31
|
|
Add line loop emulation for draw arrays
Bug: angleproject:383356846
Change-Id: I43f4835e17ecb2401418f77555fd70332612e1bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6090912
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Liza Burakova <liza@chromium.org>
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
|
|
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>
|
|
40523499
|
2025-01-29T12:13:45
|
|
WebGPU: Emulate line loops for drawElements
Bug: angleproject:383356846
Change-Id: I82a6dfad4a1c5d434f029701611e4b61344655f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6086120
Commit-Queue: Liza Burakova <liza@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
37dd8e92
|
2024-09-20T17:49:11
|
|
WebGPU: Stream client arrays
Add support for vertex attributes and index data without buffer
backings. Stream the data to buffers at draw time.
Bug: angleproject:368602384
Change-Id: I697b7882cdebf0dfab08fcffabd2d36048920547
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5878137
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
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>
|
|
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>
|
|
84492ff3
|
2024-09-10T13:11:07
|
|
Sync vertex attributs in VertexArrayWgpu.
This change only sets vertex attributes within VertexArrayWgpu and
sets them in the render pipeline description owned by the context.
It does not yet set attributes in the output pipeline created in
CreatePipeline, as vertex buffers are also not set yet.
Bug: angleproject:359823692
Change-Id: I1c3848e15d790026d53d4ab5614b1125f773e06a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5781788
Commit-Queue: Liza Burakova <liza@chromium.org>
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f2c00e8c
|
2024-01-18T18:36:33
|
|
Adding Dawn stub backend to ANGLE
Bug: angleproject:8473
Change-Id: I81ea83986e4e566169aa82250b5cfb727985ed01
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5201413
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Liza Burakova <liza@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|