|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
8522e835
|
2024-08-26T20:46:45
|
|
WebGPU: Avoid poping error scopes too many times
The ErrorScope RAII wrapper would pop the webgpu error scope
multiple times if the explicit PopScope funciton was called before
the destructor.
Bug: angleproject:362191737
Change-Id: I8caa7ab39addf03bc09a7cce517cde800c91653c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5815568
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
|
|
e10e31ed
|
2024-08-26T12:56:42
|
|
WebGPU: Add error handling macros for debugging.
Add a ANGLE_WGPU_SCOPED_DEBUG_TRY to create an error scope, execute
some commands and pop the scope in builds with assertions enabled.
A follow-up with full error handling at frame boundaries is still
needed.
Bug: angleproject:362191737
Change-Id: I4af9e1587f6d70bf14a3f6435b487e26424624ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5813006
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
057bc0f0
|
2024-08-07T11:38:54
|
|
WebGPU: Set multiple parameters in RenderPipelineDesc.
This change adds multiple setters to RenderPipelineDesc to set
various parameters within the DepthStencilState.
Bug: angleproject:42267012
Change-Id: I71eed7195477572295de6575bfa18d2c58ca93de
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5765553
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Commit-Queue: Liza Burakova <liza@chromium.org>
|
|
c5d4c16f
|
2024-08-02T11:27:56
|
|
WebGPU: Initialize all GLES 2 and 3 caps
Instead of using the min caps, intialize them with limits from the
WebGPU limits struct or values from the spec.
Bug: angleproject:357017322
Change-Id: I15597b192d915dad7c3f6bacab048cf09999da6d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5759280
Reviewed-by: Liza Burakova <liza@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
31c0f439
|
2024-08-02T09:18:33
|
|
WebGPU: Centralize caps generation
All GL and EGL caps can be generated at display creation time for
WebGPU. Move all existing logic into a centralized GenerateCaps
function.
Bug: angleproject:357017322
Change-Id: I7398d4ee539192d64971023d9a598ac1f11592ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5759279
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Liza Burakova <liza@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
c4274d54
|
2024-04-29T11:47:34
|
|
WebGPU: Add pipeline creation and caching.
Bug: angleproject:342213825
Change-Id: I303f193d30fd6b9820efaefcae64e11042888009
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5497535
Reviewed-by: Liza Burakova <liza@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
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>
|
|
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>
|
|
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>
|
|
041b0a4d
|
2024-04-15T13:42:17
|
|
Begin initializing caps for webgpu
Bug: angleproject:8457
Change-Id: Idde0673297ec675a13bd3e4fd4d220ec47392153
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5391987
Reviewed-by: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Liza Burakova <liza@chromium.org>
|
|
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>
|
|
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>
|
|
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>
|