|
23ec0620
|
2023-03-23T09:51:53
|
|
Vulkan: Add more data to blob cache header
This is to potentially increase blob cache robustness against
collisions and partially modified data. This CL adds 7 bytes
per chunk (8 bytes in total). During decompression, the data
will be checked in order to determine if the cache data can
be used.
* Added chunk index to the header. (1 byte)
* Added CRC16 of the compressed data to the header. (2 bytes)
* Added the original (uncompressed) data size to the header. (4 bytes)
* Moved kBlobHeaderSize to the anonymous namespace.
* Added the following GN flag to enable CRC calculation for the cache.
* angle_enable_crc_for_pipeline_cache (only available in debug mode)
* Corresponds to kEnableCRCForPipelineCache.
* When it is false, the CRC is set to 0.
Bug: b/246683126
Change-Id: I9aaf9cda52e0af07a2e1c2d0c39aca407e515701
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4378717
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
79a2f7e4
|
2023-04-06T10:42:19
|
|
EAGL: Remove the impl preprocessor guards
Adhere to the project formatting:
- Remove #if preprocessor guards from the EAGL implementation.
- Order the includes as in style guide
- Use include / import consistently
- Move GLES_SILENCE_DEPRECIATION into .gn, similar to CGL
- Remove or add platform.h include based on whether the file
itself actually the platform.h defined macros
Simplifies the nested preprocessor macros. Makes it simpler
to further fix the preprocessor use.
WebKit should instead have a non-ANGLE .mm file #importing
the implementations with the proper include guards.
Bug: angleproject:8121
Change-Id: I775bedd048fe3382f873abffb693f130f6104c5c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4404158
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Dan Glastonbury <djg@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
36296928
|
2023-03-31T16:44:35
|
|
Mark RGBX and BGRX formats as having 8 unused bits.
This makes sure that pixelBytes ends up being 4 and fixes potential
buffer size validation.
Fix EGL configs using pixelBytes to compute EGL_BUFFER_SIZE which
is not supposed to include unused bits. This is covered by
dEQP-EGL.functional.query_config.constraints.color_buffer_size
Bug: chromium:1404790
Change-Id: I47a6e825f3b47501fd0984c21554c394fef32eb6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4390022
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
1e9182a5
|
2023-04-05T12:54:30
|
|
Disable staged uploads to packed texture formats on AMD.
The same formats are having upload failures on AMD drivers.
Bug: chromium:1430857
Change-Id: I8364d5646ff6811db09710ac27d2ac0f6dfdc116
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4401891
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
f33c16e3
|
2023-03-27T00:00:00
|
|
Add SampleVariablesTest
* Increased required OpenGL context version to 4.2
to disable the extension on older platforms that
do not pass the tests.
Bug: angleproject:8097
Change-Id: I9158d895f0b0ec80db2516cc126e89ff5da753e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4401931
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9a2ef389
|
2023-04-04T14:57:09
|
|
Vulkan: Minor protected submitCommands() optimization.
Bug: angleproject:3965
Change-Id: I52a7597f1dd3bdaf4a221c6b6338caa1577c08f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392876
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
8b79410b
|
2023-04-02T22:25:12
|
|
Vulkan: Treat readonly SSBOs as readonly!
Instead of assuming SSBOs are always written to, this change adds
plumbing for the backend to know when an SSBO is declared readonly and
marks the buffer readonly accordingly.
With this change, BufferVk can optimize uploads and copies to and from
the buffer with the knowledge that it can be safely mapped on the CPU
for read while it's being used by the GPU.
Bug: b/276002151
Change-Id: I75342148c07949a83436054a738395bbd88caec5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392720
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
25e60197
|
2023-03-31T14:17:26
|
|
Vulkan: Unify buffer alloc strategy for uploads and GPU copies
With this change, glCopyBufferSubData uses the same buffer allocation
strategy as glBufferSubData. Only exception is with buffer self-copies
which never allocate a new buffer for simplicity.
Additionally, this change allows glCopyBufferSubData to be done on the
CPU if possible, i.e. if the source buffer is not being written to by
the GPU and whenever the equivalent glBufferSubData would have used a
CPU upload.
Bug: b/276002151
Change-Id: Ice8df5891c5516b148245d5d6fa9b19b787df4ce
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4390023
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
41f0a321
|
2023-04-03T21:58:43
|
|
Revert "Vulkan: Reactivate already started render pass when possible"
This reverts commit ad9537af7f2bb5e22bc73f4e833fd3789adaa217.
Reason for revert: Suspected cause for flakiness. anglebug.com/8118
Original change's description:
> Vulkan: Reactivate already started render pass when possible
>
> In some usage case (such as lineage_mobile), we are seeing in the middle
> of render pass, app switch to another fbo just to issue a glClear()
> call, which the clear call itself gets deferred. Application then switch
> back to the original frame buffer. Before this CL, the render pass gets
> recreated due to frame buffer binding change, even though the clear gets
> deferred and new render pass and the previous render pass are
> essentially the same. This CL detects this situation and reactivate the
> current render pass instead of creating a new one. With this CL,
> lineage_m app trace reduces frame time from 3.86ms to 3.7ms, and only
> one render pass is used instead of two.
>
> This CL also allows the render pass started by BlitFramebuffer reused by
> subsequent draw calls. Asphalt_9 is hitting this use pattern and this CL
> reduces frame time by 0.1245 ms (from 5.6203 ms to 5.4958 on pixel 7
> pro)
>
> Bug: b/273808966
> Change-Id: I48c2671cbef3ff9d6cf59caae88c37c77828ee07
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4348713
> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/273808966
Change-Id: I81cc2dcacb52466808b2ccf5819feda466c39fc5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4396502
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3aea3cfd
|
2023-04-03T16:38:29
|
|
Vulkan: Workaround depth bias constant factor on ANV
Bug: b/249380591
Change-Id: Iaeda7faf5eb40e0e2086674d3e63bf5bc9911ab4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4392893
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
96cda1ac
|
2023-03-31T15:08:11
|
|
Vulkan: Switch to modified framebuffer should trigger submit
The feature flag preferSubmitAtFBOBoundary intended to trigger
submitCommands call when FBO is switched. Right now there is a bug that
when FBO is switched, submitCommands did not get called even if feature
is enabled. The reason is that when framebuffer changed, we first get
FramebufferVk::syncState call, and if the FBO that we switched to is
drity, we will end up calling ContextVk::flushCommandsAndEndRenderPass
to immediate end the render pass. The problem with that is that later on
when we get to ContextVk::syncState and saw
DIRTY_BIT_DRAW_FRAMEBUFFER_BINDING dirty bit and try to issue a submit,
we notice render pass already ended, so mHasDeferredFlush never gets
set, which means we never call submitCommands. All apps render to system
framebuffer in the last render pass, and system framebuffer is always
dirty due to swap chain image rotation, we hit this almost with every
app. This CL avoid flushCommandsAndEndRenderPass() call from
FramebufferVk::syncState. We now relies on
ContextVk::onFramebufferChanged (which calls onRenderPassFinished()
which will set DIRTY_RENDER_PASS bit to trigger deferred endRenderPass)
to end the current render pass.
This CL also add a regression test to ensure the submit indeed occur.
Bug: b/275624771
Change-Id: I92b95a7a6c435f242d6684cb7852172cf41896c3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4390642
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
c5e9de23
|
2023-04-03T15:14:03
|
|
Revert "Vulkan: Use midRenderPass clear if RP has started but inactive"
This reverts commit 98151770adfd990c533991da27615b4879494307.
Reason for revert: Suspected cause for flakiness. anglebug.com/8118
Original change's description:
> Vulkan: Use midRenderPass clear if RP has started but inactive
>
> This CL extends prior CL's optimization so that if clear is issued right
> after blitFramebuffer call (this could make sense if blit and clear are
> on different buffer), we can keep the started render pass and do the
> midRenderPass clear instead of endRenderPass and start another
> renderPass.
>
> Bug: b/273808966
> Change-Id: Ia2504e8e260867a6f797d42cd4c8a72f187280ef
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374145
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: b/273808966
Change-Id: I7a11635a6eceafb6f4fb3a0d95f6627ee98321c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4393497
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f1f80e1e
|
2023-03-22T12:54:08
|
|
Metal: Always prefer staged GPU uploads for textures.
Uploading Metal texture data via MTLTexture::replaceRegion is a source
of lots of CPU hangs and jank. There may be better heuristics to
determine if we should do a CPU vs GPU upload but for now preferring
GPU uploads has better overall performance.
This also improves the MotionMark images test:
- 40 -> 100 when using Metal.
- 217 -> 235 when using Metal +
https://chromium-review.googlesource.com/c/chromium/src/+/4091749
Bug: angleproject:8024, angleproject:8092, angleproject:8109
Change-Id: I36b5f585884391b4cc416365ae65f8542745beee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4264963
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
b24b5568
|
2023-03-27T00:00:00
|
|
Vulkan: Skip sample coverage for single sample rendering
A new test sets sample coverage to zero and checks
that it is applied only to multisampled rendering.
Bug: angleproject:8102
Change-Id: I1a5649869e9b7ecf0543108fb99095bfaf6fd858
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4379839
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
61cd24d4
|
2023-03-31T14:54:17
|
|
MTLPixelFormatRGB9E5Float is not renderable on simulator.
See https://developer.apple.com/documentation/metal/
developing_metal_apps_that_run_in_simulator?language=objc
Bug: angleproject:7994
Change-Id: I07e50c19aaf6d033c7c25d0dbd4b21a8c255c1d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4386403
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
f176027f
|
2023-03-31T13:37:03
|
|
CGL: implement EGL_ANGLE_wait_until_work_scheduled
It is as important to wait until scheduled in CGL, as it is in Metal.
CGL waits until scheduled when glFlush() is called.
Fixed: angleproject:8112
Change-Id: Id4a9e87804c6df1828b35cfd30c8427314820e52
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4386400
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
552d4271
|
2023-03-31T10:59:30
|
|
Vulkan: Refactor buffer init logic
Bug: b/276002151
Change-Id: I28d3fa34ab11340cc8b38743e87664a514870068
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4388547
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
6458cd95
|
2023-03-30T14:27:07
|
|
[GL backend] Remove over-zealous ASSERT in StateManagerGL.cpp
StateManagerGL::bindVertexArray asserts that the passed-in
|vaoState| pointer is non-null; however, we actually pass in null
directly in [1]. This assert goes off when running a WebView test
with ANGLE.
[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp;l=3385;drc=48340c1e35efad5fb0253025dcc36b3a9573e258;bpv=1;bpt=1
Bug: chromium:1168587
Change-Id: I14d5f9f317f3cbe2a828ab7637edc5f1911bf81c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4381861
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5fcd027e
|
2023-03-29T08:54:34
|
|
Fix the watchOS build for the mirror clamp to edge extension
The mirror clamp to edge extension relies on
MTLSamplerAddressModeMirrorClampToEdge, which is not available
on watchOS. Disable the extension there for the moment.
Bug: angleproject:8103
Change-Id: I52b9d5217b39080cde6663e0d0fa839e53dacecf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4379037
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
20f3df07
|
2023-03-30T11:36:29
|
|
Vulkan: ImageHelper::initExternal missing some variable init
When ImageHelper::releaseImage is called and then re-initialized (due to
mipmap change or usage change etc), right now we have a bug that
mCurrentShaderReadStageMask and mLastNonShaderReadOnlyLayout are still
left as is. And they do not get reset when image is initialized. This
means if the image was reinitialized again, it may end up think the new
image was previously used by fragment shader and insert an unnecessary
barrier when new VkImage is used. This was discovered when I do the
experimental work try to ghost VkImage for glTexSubImage call and
realized that new VkImage was having a strong fragment->vertex
dependency which it should not (since this is a new VkImage). This CL
initialize mCurrentShaderReadStageMask and mLastNonShaderReadOnlyLayout
and mCurrentQueueFamilyIndex from initExternal call since it is a new
vkImage.
Bug: b/273808966
Change-Id: I5bbeae5f1012f10c24620cfae8fa20365a7b5ab7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4386136
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
98151770
|
2023-03-27T09:49:33
|
|
Vulkan: Use midRenderPass clear if RP has started but inactive
This CL extends prior CL's optimization so that if clear is issued right
after blitFramebuffer call (this could make sense if blit and clear are
on different buffer), we can keep the started render pass and do the
midRenderPass clear instead of endRenderPass and start another
renderPass.
Bug: b/273808966
Change-Id: Ia2504e8e260867a6f797d42cd4c8a72f187280ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374145
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ad9537af
|
2023-03-16T16:03:29
|
|
Vulkan: Reactivate already started render pass when possible
In some usage case (such as lineage_mobile), we are seeing in the middle
of render pass, app switch to another fbo just to issue a glClear()
call, which the clear call itself gets deferred. Application then switch
back to the original frame buffer. Before this CL, the render pass gets
recreated due to frame buffer binding change, even though the clear gets
deferred and new render pass and the previous render pass are
essentially the same. This CL detects this situation and reactivate the
current render pass instead of creating a new one. With this CL,
lineage_m app trace reduces frame time from 3.86ms to 3.7ms, and only
one render pass is used instead of two.
This CL also allows the render pass started by BlitFramebuffer reused by
subsequent draw calls. Asphalt_9 is hitting this use pattern and this CL
reduces frame time by 0.1245 ms (from 5.6203 ms to 5.4958 on pixel 7
pro)
Bug: b/273808966
Change-Id: I48c2671cbef3ff9d6cf59caae88c37c77828ee07
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4348713
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
3c8aee63
|
2023-03-27T13:24:47
|
|
D3D11: Fix streamed instanced attribute size calculation.
D3D11 passes around a 0 instance count to signify "not an instanced
draw call". This had an incorrect interaction with
ComputeVertexBindingElementCount which checks for an instance count
of 0 and skips instancing calculations.
Force instance count to be at least 1 when computing buffer size
needed.
Bug: chromium:1425606
Change-Id: Ia10fa1c11abebce28c57ce4527e2b748e51516ce
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4375138
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
48b431ca
|
2023-03-21T16:39:33
|
|
Vulkan: Fix stage component reservations w.r.t xfb
Input components limit don't need to reserve any components.
This change also fixes a bug where the tessellation evaluation output
components didn't reserve a slot for gl_Position.
Additionally, the input component count of stages are clamped by the
output component count of the previous stages.
Bug: b/274289482
Change-Id: Ib5b4243d7a4cb713ccea505a5f0064bf3377caa8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4356115
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
|
|
29abd5a2
|
2023-03-06T11:35:45
|
|
Explicitly Add Aliased Memory Decoration in SpirV
In GLSL, aliased memory qualifier is implicitly available,
unless we explicitly specify the memory is restrict:
https://www.khronos.org/opengl/wiki/Type_Qualifier_(GLSL)#Memory_qualifiers.
However, in SpirV, aliased memory qualifier has to be
explicitly specified:
https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#AliasingSection
This change adds the aliased memory decorations to SSBO
if the GLSL does not specify the restrict memory qualifier.
This is a temporary workaround to fix the deqp test failures
on some android devices. Eventually we would like to waive this
test for ANGLE due to alised memory in Vulkan does not suppose
to affect SSBOs that have different set/binding, please refer
to this Khronos ticket for more details:
https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/4321
Bug: b/266235549
Change-Id: Ic7afc417a5d421664b60e0413a011314787e14e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4312130
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
97897d92
|
2023-03-27T16:02:57
|
|
Vulkan: Work around driver bug with dynamic primitive restart
This CL forces the state to be static on buggy drivers.
Bug: b/275210062
Change-Id: Ia3391ecb19c3c9d19c05a83e11da8c718513a4e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374104
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
|
|
6d12a280
|
2023-03-24T00:00:00
|
|
D3D11: Support NV_shader_noperspective_interpolation
Fixed: angleproject:8096
Change-Id: Ic7c27c735661b2ef8095c81201b2ce0a82ad3ae7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368472
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
da7dd31f
|
2023-03-27T11:29:10
|
|
GL: Disable extended dirty bit states for internal blits.
New GL states have been added to the GL backend and not updated in
ScopedGLState which is used to reset internal state for blits. This
caused test failures when tests were run in specific orders. Ex:
ClipDistanceTest.ThreeClipDistancesRedeclared/ES2_OpenGL:CopyTextureVariationsTest.CopySubTexture/ES2_OpenGL__AToBGRAFlipYUnmultiplyAlpha
Bug: angleproject:5160
Bug: chromium:1410191
Change-Id: I805e39bc8c4c7d7d843b43fdc7813dd668919e8a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374101
Reviewed-by: Peng Huang <penghuang@chromium.org>
|
|
c6ec59dc
|
2023-03-27T11:15:48
|
|
Explicitly pass the extended dirty bits to syncState.
Add a the extended dirty bits and bit mask to syncState instead of
calling gl::State::getAndResetExtendedDirtyBits when encountering
DIRTY_BIT_EXTENDED. It disallowed us from masking the extended dirty
bits and feels like an anti-pattern to modify the extended dirty bits
in gl::State from the backend.
This is a refactor only.
Bug: chromium:1410191
Change-Id: I66fdec3eb57e3426cf0fda9ccb759700eafdda14
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374100
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
fc7cb00e
|
2023-03-24T00:00:00
|
|
Metal: Support NV_shader_noperspective_interpolation
Fixed: angleproject:8095
Change-Id: Ieded1f704f82963984f1aee5072f152de0de374c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368473
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fbb16d64
|
2023-03-24T02:23:19
|
|
Mali: Disable disjointTimerQueries on ChromeOS with MaliT8xxOrOlder
ChromeOS boards using MT8183 are encountering GL_OUT_OF_MEMORY errors
when using disjointTimerQueries, which leads to meets visual effects
freezing after a couple of seconds.
Extend the workaround treatment to ChromeOS.
Bug: chromium:1356053,b/269068358
Change-Id: I212f2b4a2fed1ddd8e8344bde4f4ca9069ea3393
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4369684
Commit-Queue: Kramer Ge <fangzhoug@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kramer Ge <fangzhoug@chromium.org>
|
|
abbbe970
|
2023-03-24T08:10:40
|
|
[GL backend] Get texture bindings size from frontend caps
EGLContext currently sets the texture bindings size to be
GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS. StateManagerGL later copies
these bindings into its own textures array [1]. However, the latter
texture array is clamped to a size of max 96 [2], and thus this copy
can overflow (see crash in crbug.com/1418842).
This CL changes the texture bindings size to be set from the frontend
caps rather than the native caps. The former have the same clamping
as for StateManagerGL's textures.
[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp;drc=c85c710dec58dfdcf2f35af647a0a5155639edd5;l=3274
[2] https://source.chromium.org/chromium/chromium/src/+/main:third_party/angle/src/libANGLE/angletypes.h;drc=4a77b0f5237515960673b9bd1bc5a229f0eeaa95;l=952
[3] https://source.chromium.org/chromium/chromium/src/+/main:third_party/angle/src/libANGLE/Context.cpp;l=4050-4059;drc=b4bc946c63b2b95e1f05dec4e84adcadd10499c6
Bug: chromium:1418842
Change-Id: I66c10b640f70d9dc6c7d41925f12ffb7a3ba78e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4369699
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
afc1e5dc
|
2023-03-27T00:00:00
|
|
GL: Support OES_sample_variables
Bug: angleproject:8097
Change-Id: I983d6e83fe9ca942c91cbdf7274b46306e38f11f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368476
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
1301402c
|
2023-03-23T21:56:45
|
|
Vulkan: improve etc to bc grident texture precison.
ETC has gradient modes. Two endpoints in BC are RGB565;
the color depth is lower than ETC. Two endpoints in
RGB888 space may be quite different, but after conversion to
RGB565 they may be projected to the same point.
This conversion loses quite a lot of details.
This change tries to change one endpoint to an adjacent one
(not optimal) in RGB565, so that all the colors are interpolated
from these two endpoints. With this change,
the arknight image in b/259327729 improved PSNR from 39 to 49.
This change includes some of work by @gregschlom
1) Use look up table instead of bit operation.
2) Use more vector operations. This may not improve the performance
but makes the code short and neat.
bug: b/259327729
Change-Id: Ic0720aff17af5d466e5598dc38ba953dc084a3cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368021
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Hailin Zhang <hailinzhang@google.com>
|
|
435e557c
|
2023-03-22T21:35:09
|
|
Vulkan: Do not enforce custom ANGLEs secondary command buffers.
This change become possible after the commit:
Vulkan: Fix Secondary Command Buffers with asyncCommandQueue.
After the above change, `attach/detachAllocatorImpl<>()` will be
skipped when using Vulkan secondary command buffers. Other places that
use `mCommandAllocator` already no-op regardless of the allocator type.
Therefore enforcing:
ANGLE_USE_CUSTOM_VULKAN_OUTSIDE_RENDER_PASS_CMD_BUFFERS
ANGLE_USE_CUSTOM_VULKAN_RENDER_PASS_CMD_BUFFERS
when enabling `angle_enable_vulkan_shared_ring_buffer_cmd_alloc` is no
longer required. This will remove possible confusion when configuring
ANGLE build and allow mixing Vulkan secondary command buffers and
ANGLEs custom secondary buffers that use `shared_ring_buffer_cmd_alloc`.
Bug: angleproject:6401
Bug: b/256666069
Change-Id: I52a64065e6ce9e4aabbf76031c3f5443e0e26a3a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4360071
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
aa8f2e4b
|
2023-03-22T19:53:04
|
|
Vulkan: Minor SecondaryCommandPool::destroy() optimization.
Follow up for the commit:
9b6368ccfceddf1784ef41e95e57696453cca71d
Vulkan: Fix freeing Secondary Command Buffers from wrong thread.
Bug: angleproject:6100
Change-Id: I8ef34898941c0c5684d3ea4378332cdf6b87c0c8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4359703
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
85735eb4
|
2023-03-17T19:56:23
|
|
Vulkan: Enable async features for Secondary Command Buffers.
Since, all known problems with Secondary Command Buffers and async
features are fixed, it should be safe to allow enabling these features
for testing.
Locally, this CL passes custom build dEQP tests (EGL/GLES2/3/3.1) with
asyncCommandQueue and Vulkan Secondary Command buffers enabled.
Tests were executed on S906B that uses ANGLE as the system GLES driver.
Bug: angleproject:6811
Bug: angleproject:6100
Change-Id: Id3ef6df56f0a3bd1986f2e6047f01e6eac165fc6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4350270
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
e27e7c6a
|
2023-03-17T19:43:54
|
|
Vulkan: Retire Command Buffers before destroying the Pools.
"VulkanSecondaryCommandBuffer"s may be still in "CommandQueue" when
"ContextVk" destroys the Command Pools (asyncCommandBufferReset = true).
Fixed by calling "retireFinishedCommandsLocked()" when appropriate.
Normally, it is only required to retire Vulkan Secondary Buffers.
However, some drivers may have bug and also require to reset
Primary Buffers, that have Secondaries recorded, before destroying the
Secondaries Pools.
Bug: angleproject:6811
Bug: angleproject:6100
Change-Id: I891547c95cfbdfab44398980f939596af56ab57b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4350269
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
9524c639
|
2023-01-17T18:47:47
|
|
Vulkan: Fix Secondary Command Buffers with asyncCommandQueue.
This change fixes following errors (asyncCommandQueue = true):
1. "vkEndCommandBuffer()" called from "asyncCommandQueue" thread.
Call stack:
vkEndCommandBuffer()
VulkanSecondaryCommandBuffer::end()
OutsideRenderPassCommandBufferHelper::flushToPrimary()
CommandQueue::flushOutsideRPCommands()
CommandProcessor::processTask()
Fixed by calling "vkEndCommandBuffer()" from the Context thread
in the new "OutsideRenderPassCommandBufferHelper::detachCommandPool()"
method.
2. "vkAllocateCommandBuffers()/vkBeginCommandBuffer()" called from
"asyncCommandQueue" thread.
Call stack:
vkAllocateCommandBuffers()/vkBeginCommandBuffer()
VulkanSecondaryCommandBuffer::initialize()
<*>CommandBufferHelper::initializeCommandBuffer()
<*>CommandBufferHelper::reset()
<*>CommandBufferHelper::flushToPrimary()
CommandQueue::flush<*>Commands()
CommandProcessor::processTask()
Fixed by calling "vkAllocateCommandBuffers()/vkBeginCommandBuffer()"
from the Context thread in the new
"<*>CommandBufferHelper::attachCommandPool()" method.
3. "SecondaryCommandPool::collect()" called from "asyncCommandQueue"
thread without synchronization.
Call stack:
SecondaryCommandPool::collect()
rx::vk::RecycleCommandBufferHelper()
CommandBufferRecycler<>::recycleCommandBufferHelper)
RendererVk::recycle<*>CommandBufferHelper()
CommandProcessor::processTask()
No need for this call, because "SecondaryCommandPool" is already
detached.
Notes:
This CL not only fixes errors, but also optimizes CommandBufferHelper
recycling. Before, there was no recycling plus unnecessary
"VulkanSecondaryCommandBuffer" allocation/freeing.
Further optimization may add multiple "VkCommandPool"s to the
"SecondaryCommandPool" to allow resetting buffers in the async thread.
Bug: angleproject:6811
Bug: angleproject:6100
Change-Id: I7004c27a112e916c5c973b43b137193017d6aa3d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4342189
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
f2c5ce4e
|
2023-03-16T17:44:56
|
|
Re-enable mutable texture upload for one context
It was observed that in some apps, mutable textures are uploaded in a
context, but that context's outside RP command buffer is not flushed
at all, resulting in invalid (noise) or incorrect textures.
* Added isEligibleForMutableTextureFlush() to be used to determine
whether onMutableTextureUpload() should be called.
* Restricted the use of mutable texture upload to single-context
share groups.
* When the number of contexts becomes greater than one, the original
context's outside render pass command buffer is flushed.
* Added related tests.
* Added a test to make sure that textures can be uploaded in one
thread, and used for draw calls in another, with the help of a
sync object.
* Added a test to make sure that textures can be uploaded in the
main thread, and used in a new thread.
* Added a test in which a new context is created after mutable
mipmap textures are defined.
Bug: b/264143971
Change-Id: I66c0d8b04d39bb7244e5752aac0e46a0192f012e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4349156
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
997c4c7b
|
2023-03-21T00:00:00
|
|
D3D11: Implement EXT_conservative_depth
Drive-by:
* Hid the extension from ES 2.0 client contexts.
Bug: angleproject:8046
Change-Id: I8bca4161dde4bda7ee75541b9164777884900d89
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4366784
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
648f3657
|
2023-03-21T00:00:00
|
|
Metal: Implement EXT_conservative_depth
Bug: angleproject:8046
Change-Id: I3b9f497da19bf005c7948e552f2e1c7415d4ac6d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4363020
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0e502f8c
|
2023-03-20T20:34:28
|
|
Vulkan: Update SharedCommandBlockPool::valid() method.
Current logic returns `valid()` result whether `mAllocator` is
attached or not. However this is not correct, because it is allowed
to use some method even after allocator is detached.
Since this class does not require initialization - it is always valid.
Bug: angleproject:6401
Bug: b/256666069
Change-Id: I57f899ae7718762b7e2b68e9c3d1e04dccb2c351
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4355391
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
888ca8d9
|
2023-03-21T18:56:56
|
|
Bind FBO before timer query on Mali GL driver.
glBeginQuery(GL_TIME_ELAPSED/GL_TIMESTAMP) on Mali implementation
assumes a complete FrameBuffer. Without it glGetQueryObject will return
a meaningless value, causing some applications to misbehave.
This workaround caches and binds a default FBO in this case.
Bug: chromium:1356053,b/269068358
Change-Id: I756ded948c2c5aada744f9dd428ad77c37a009c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4359032
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kramer Ge <fangzhoug@chromium.org>
|
|
ad52f12e
|
2023-03-21T00:00:00
|
|
Implement EXT_conservative_depth
Added translator frontend and GLSL backend
support for gl_FragDepth redeclaration and
layout qualifiers.
Added mappings to DepthGreater, DepthLess,
and DepthUnchanged SPIR-V execution modes.
Bug: angleproject:8046
Change-Id: I23f19ff54380741107970a44055ea269eef179f6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4355028
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a621ea88
|
2023-03-17T10:21:56
|
|
Adding a trace point for texture metrics.
Bug: b/236121838
Change-Id: I28e7977f7b5dc6e24cb5a2be10689c223851ba0b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4348737
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
ba845fcf
|
2023-03-20T00:00:00
|
|
Metal: Implement EXT_clip_control
* Skipped vertex shader depth correction when
clip depth mode is set to GL_ZERO_TO_ONE.
* Adjusted front face mode and pre-fragment
vertical flip driver uniform based on the
clip origin state.
* Added more clip control end2end tests.
* D3D11: Fixed scissored draws
with upper-left clip origin.
Fixed: angleproject:8065
Change-Id: Ife82fa2ad39fad463c23ec10b49bff409272ebf2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4356661
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
e809e7bd
|
2023-03-13T00:00:00
|
|
Reland "Implement EXT_depth_clamp"
This is a reland of commit f8c1418319ac2aef4b3101e322005b1d0f73120f
Host GPU bugs are observable in iOS Simulator
Original change's description:
> Implement EXT_depth_clamp
>
> * Added depthClamp to the RasterizerState
> * Added DepthWriteTest end2end tests covering
> both clipped and clamped depth writes
>
> Capture
> * Updated serialized rasterizer state
> * Updated CaptureMidExecutionSetup
>
> OpenGL
> * Requires GL 3.2 or ARB_depth_clamp
> on desktop contexts
> * Maps to EXT_depth_clamp on ES
>
> D3D11
> * Maps to the opposite of
> D3D11_RASTERIZER_DESC.DepthClipEnable
> * The new tests uncover several edge cases where
> a workaround is needed to implement unextended
> OpenGL semantics on top of D3D
>
> Metal
> * Maps to the setDepthClipMode command
>
> Bug: angleproject:8047
> Bug: angleproject:8077
> Change-Id: I1b3448e5b84443e4be18af9bc22d2f8495ac8267
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4347753
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: angleproject:8047
Bug: angleproject:8077
Change-Id: I8c5f8304276c97c51b2c3382cd2764592ee0c3fe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4349938
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
4a77b0f5
|
2023-03-18T00:16:24
|
|
Revert "Implement EXT_depth_clamp"
This reverts commit f8c1418319ac2aef4b3101e322005b1d0f73120f.
Reason for revert: This change breaks angle_end2end_tests on Metal backend: https://ci.chromium.org/ui/p/chromium/builders/ci/ios-angle-intel/26035/overview
Original change's description:
> Implement EXT_depth_clamp
>
> * Added depthClamp to the RasterizerState
> * Added DepthWriteTest end2end tests covering
> both clipped and clamped depth writes
>
> Capture
> * Updated serialized rasterizer state
> * Updated CaptureMidExecutionSetup
>
> OpenGL
> * Requires GL 3.2 or ARB_depth_clamp
> on desktop contexts
> * Maps to EXT_depth_clamp on ES
>
> D3D11
> * Maps to the opposite of
> D3D11_RASTERIZER_DESC.DepthClipEnable
> * The new tests uncover several edge cases where
> a workaround is needed to implement unextended
> OpenGL semantics on top of D3D
>
> Metal
> * Maps to the setDepthClipMode command
>
> Bug: angleproject:8047
> Bug: angleproject:8077
> Change-Id: I1b3448e5b84443e4be18af9bc22d2f8495ac8267
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4347753
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: angleproject:8047
Bug: angleproject:8077
Change-Id: I829add68c006c72b7b4acf03aee3efa8a9a16fac
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4350876
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
7d1a401b
|
2023-01-17T18:45:55
|
|
Vulkan: Fix freeing not completed Secondary Command Buffers.
Problem:
- Protected Context flushes its commands to the Protected
Primary Command Buffer;
- Unprotected Context flushes its commands to the Unprotected
Primary Command Buffer;
- Context with different "egl::ContextPriority" may flush commands
into different Primary Command Buffers.
- Secondary Command Buffers from all Contexts end-up in the single
"CommandBufferRecycler::mSecondaryCommandBuffersToReset" list;
- One of the Contexts submits its Primary Command Buffer, and attaches
current "mSecondaryCommandBuffersToReset" list to the "CommandBatch";
- Secondary Command Buffers of other Contexts may be collected and
later freed by "SecondaryCommandPool" without submitting/completion
corresponding Primary Command Buffers.
Fix:
- Moving "mSecondaryCommandBuffersToReset" to the new
"SecondaryCommandBufferCollector" class.
- Separate "SecondaryCommandBufferCollector" instance is stored
in the "CommandQueue" for each current Primary Command Buffer.
Additionally fixes "asyncCommandQueue" related problem:
"releaseCommandBuffersToReset()" may get outdated results if flush is
not yet executed in the "asyncCommandQueue" thread.
Bug: angleproject:6100
Change-Id: I7df161ac1f999fb34d4eccaebb603c58ecb1ac11
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4334579
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
9b6368cc
|
2023-03-14T14:48:30
|
|
Vulkan: Fix freeing Secondary Command Buffers from wrong thread.
Problem:
- Secondary Command Buffers are freed in the "CommandQueue" class.
- This may happen from any Context thread that calls
"checkCompletedCommands()" or "finish<*>()" methods.
- As the result, one Command Buffer may be freed from one thread, while
other Command Buffer from the same "VkCommandPool" is
allocated/reset/recorded in the other thread.
Vulkan spec demands external "VkCommandPool" synchronization for any
modifications (begin/end/reset/free/cmd) on its "VkCommandBuffer"s.
Fix:
- Added new "rx::vk::SecondaryCommandPool" class that replaces the
"rx::vk::CommandPool" wrapper.
- This class has "collect()" method for storing "VkCommandBuffer"s.
Collected buffers are freed from the correct thread on the next
"allocate()" call.
This CL only fixes the problem, keeping Secondary Command Buffer memory
management as is (allocate/free single buffer without reuse).
In the future CLs this behavior may be changed (reuse buffers,
reset/free entire pools).
Bug: angleproject:6100
Change-Id: If938416c4df4fe55f0cfb418b6759721ac53098b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4334577
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
29f80eda
|
2023-03-15T14:59:26
|
|
Vulkan: Hot fix crash when using Invalid VkSemaphore Object.
Problem started after the commit:
b194c21ad30145ca15153a93425a37a8211df373
Vulkan: Enforce ContextPriority in ShareGroup and with EGLImage
Happens only with enabled "asyncCommandQueue" feature:
- "RendererVk::submitPriorityDependency()" creates "Vk::Semaphore"
object on the stack.
- Then submits this Semaphore with "queueSubmitWaitSemaphore()" method.
- "vk::Semaphore" passed to the "CommandProcessor"s
"enqueueSubmitOneOffCommands()" method where stored in the
"CommandProcessorTask".
- Stack "vk::Semaphore" object garbage collected by the "RendererVk"
and then destroyed.
- "CommandProcessorTask" now points to the invalid memory.
This CL changes usage of "vk::Semaphore" and "vk::Fence" pointers in
the "CommandProcessor.h" classes to Vulkan Handles. This will make API
consistent, fix this problem, and avoid similar problems in the future.
Issue discovered while testing ANGLE as a system driver on S906B with
"asyncCommandQueue" enabled. Several system processes crashed with VVL:
VUID-VkSubmitInfo-pWaitSemaphores-parameter(ERROR / SPEC):msgNum: -1328048864 -
Validation Error: [ VUID-VkSubmitInfo-pWaitSemaphores-parameter ]
Object 0: handle = 0xb4000078c1aab430, type = VK_OBJECT_TYPE_INSTANCE;
| MessageID = 0xb0d79520 | Invalid VkSemaphore Object 0xb400007831740b98.
The Vulkan spec states: If waitSemaphoreCount is not 0, pWaitSemaphores
must be a valid pointer to an array of waitSemaphoreCount valid VkSemaphore handles
(https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkSubmitInfo-pWaitSemaphores-parameter)
Bug: angleproject:8039
Change-Id: I8818288b9783b5c5a7970bf82ec721452ae57471
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4339758
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
12b3d52d
|
2023-03-10T17:02:55
|
|
Prevent bugs in "FastVector" class.
FastVector does not call destructors when resizing down and constructors
when resizing up. This may cause reuse of previous values after resizing
up and prevent releasing resource in destructors.
Above problems only relevant for non trivially
constructible/destructible types.
For performance reasons (chromium:1417087) this CL disables using
trivially destructible types at all and adds special resizing methods
for non trivially constructible types.
Almost all uses of FastVector was already using trivially destructible
types. Except "angle::FixedVector" used in "rx::vk::SubpassVector<>".
However, "angle::FixedVector" is unnecessarily calls "clear()" in the
destructor. This CL removed "clear()" and made the destructor trivial.
All non trivial constructor cases are limited to
"angle::spirv::BoxedUint32<>" used in
"angle::spirv::FastVectorHelper<>".
No problems found because of the possibility to reuse previous values.
All "resize(count)" methods replaced with special versions.
Therefore, this CL does not fix actual bugs, but rather prevents
incorrect use in the future.
Bug: angleproject:8021
Bug: chromium:1417087
Change-Id: Id65d75575f2f582450b1cc45dc6b1f2bf3bc5289
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4328286
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
f8c14183
|
2023-03-13T00:00:00
|
|
Implement EXT_depth_clamp
* Added depthClamp to the RasterizerState
* Added DepthWriteTest end2end tests covering
both clipped and clamped depth writes
Capture
* Updated serialized rasterizer state
* Updated CaptureMidExecutionSetup
OpenGL
* Requires GL 3.2 or ARB_depth_clamp
on desktop contexts
* Maps to EXT_depth_clamp on ES
D3D11
* Maps to the opposite of
D3D11_RASTERIZER_DESC.DepthClipEnable
* The new tests uncover several edge cases where
a workaround is needed to implement unextended
OpenGL semantics on top of D3D
Metal
* Maps to the setDepthClipMode command
Bug: angleproject:8047
Bug: angleproject:8077
Change-Id: I1b3448e5b84443e4be18af9bc22d2f8495ac8267
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4347753
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
12aefbc0
|
2023-03-16T04:43:38
|
|
Vulkan: add MESA Virtio-GPU Venus driver feature conditions
Bug: b/267576238
Change-Id: I5f0c479b23cd3465ca7560966bb4d98edf4c40df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4342819
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f4e71351
|
2023-03-14T14:55:04
|
|
Vulkan: Switch acquireAndUpdate to use Buddy pool
Based on survey of all app traces we have, it is common that we end up
with BufferVk::acquireAndUpdate even though the buffer was created with
STATIC usage. This is mostly due to glBufferSubData call on the STATIC
usage buffers and on ARM we most likely end up with acquireAndUpdate.
Similarly, we also getting into ghostMappedBuffer and mapRangeImpl with
STATIC usage buffers, even though with less app traces. Since the usage
pattern usually repeats, using generic allocation algorithm has
performance penalty. This CL moves these usage to buddy algorithm to
ensure alloc/free are fast.
This CL and previous CL crrev.com/c/4327290, reduces efootball_pes-2021
frame time from 4.2 ms to 2.87 ms, achieves parity with native GLES on
pixel 7 pro.
Bug: b/271915956
Change-Id: I56e0195181c77a3130513c74ec8a5075b2b29ea4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4321870
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
4c157b4b
|
2023-03-14T18:45:38
|
|
Vulkan: Switch staging buffer to Buddy algorithm
Staging buffer should be considered as dynamic and uses buddy allocator.
Bug: b/271915956
Change-Id: I7cbe3765fdae120582034b24376560043e007e67
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4327290
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
a8401f03
|
2023-03-15T09:29:14
|
|
Mark the context as needing flush in TextureGL set*Image operations
Bug: chromium:1181068, chromium:1418291
Change-Id: I70b158dcec54edf20b44fcc6169d1fc1d86a0de7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4341190
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
|
|
4982b903
|
2023-03-14T19:56:51
|
|
Revert "Vulkan: Remove inUseAndRespecifiedWithoutData from BufferVk"
This reverts commit 755bfe471d23bc2aac5e78493537801dc5f90792.
Reason for revert: Causing flaky on pixel 6 angleproject:8082
Original change's description:
> Vulkan: Remove inUseAndRespecifiedWithoutData from BufferVk
>
> BufferVk::setDataWithMemoryType() has one optimization that it tries to
> detect glBufferData(target, size, nullptr, usage) and if existing
> storage is busy, it immediately reallocate storage. With the
> optimization in previous CL (crrev.com/c/4317488), the storage reuse
> logic should detect if we can reuse the storage or not. If the size
> matches the existing storage's size, then there is no reason we can not
> reuse existing storage. Later on when glBufferSubData or
> glMapBufferRange is called, there are optimization in those calls that
> will detect if we should reallocate storage or not as the further
> optimization. This CL removes this check and replies on the other
> optimization to handle the storage reallocate (shadowing) if necessary.
> This simplifies code and also potentially avoids storage reallocation in
> certain usage cases.
>
> This CL also fixes a test bug in
> BufferDataTestES3.BufferDataWithNullFollowedByMap that was calling
> glMapBufferRange with MAP_UNSYNCHRONIZED_BIT but incorrectly expecting
> GL to do synchronization.
>
> Bug: b/271915956
> Change-Id: I7901687b3e3e262e77699f14eb8602d8a57eda3e
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4322048
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Bug: b/271915956
Change-Id: Ie5716b609ab96b96afbe5927f20dfcf2bf5d4db6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4338263
Auto-Submit: Charlie Lao <cclao@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
a8720455
|
2023-03-10T13:48:03
|
|
D3D11: Add logic to disassociate EGL image storages.
The TextureStorage classes for External and EGLImages were missing the
logic to disassociate from images. This lead to the images continuing
to hold references to deleted storages.
Bug: chromium:1415330
Change-Id: I8303f6751d87a9b0a52993c7d4e9509b086b93f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4328347
Reviewed-by: Peng Huang <penghuang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
9c167fd2
|
2023-03-14T10:37:39
|
|
Mark the context as needing flush in TextureGL copy/blit operations
Bug: chromium:1181068, chromium:1418291
Change-Id: Ibce7d27ba33e7ed3a05ea0226ef60aa31682286a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4337957
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
513ca723
|
2023-03-13T14:30:20
|
|
Delete GL_LOAD_OP_DISABLE_ANGLE from PLS
This load op makes the PLS spec and WebGL implementations unnecessarily
complex.
Bug: chromium:1421437
Change-Id: Iab02a8b02083899c6cc345ecb25b88c5871611c9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4335148
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b26b01a2
|
2023-03-09T00:00:00
|
|
Implement EXT_render_snorm
Bug: angleproject:8048
Change-Id: Id01beaea9565f8ab374c732fef70ec0ac0d8743e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4334303
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
bf5e9dbc
|
2023-03-09T00:00:00
|
|
GL: Reset clip origin before scissored clears
Clip origin must not affect scissor box but
some drivers flip it for clear operations.
Added capture/replay support for ClipControl.
Bug: angleproject:8066
Change-Id: I9292cb4945b49c56c80da4c5813e89df3453b6b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4328267
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
755bfe47
|
2023-03-08T14:31:33
|
|
Vulkan: Remove inUseAndRespecifiedWithoutData from BufferVk
BufferVk::setDataWithMemoryType() has one optimization that it tries to
detect glBufferData(target, size, nullptr, usage) and if existing
storage is busy, it immediately reallocate storage. With the
optimization in previous CL (crrev.com/c/4317488), the storage reuse
logic should detect if we can reuse the storage or not. If the size
matches the existing storage's size, then there is no reason we can not
reuse existing storage. Later on when glBufferSubData or
glMapBufferRange is called, there are optimization in those calls that
will detect if we should reallocate storage or not as the further
optimization. This CL removes this check and replies on the other
optimization to handle the storage reallocate (shadowing) if necessary.
This simplifies code and also potentially avoids storage reallocation in
certain usage cases.
This CL also fixes a test bug in
BufferDataTestES3.BufferDataWithNullFollowedByMap that was calling
glMapBufferRange with MAP_UNSYNCHRONIZED_BIT but incorrectly expecting
GL to do synchronization.
Bug: b/271915956
Change-Id: I7901687b3e3e262e77699f14eb8602d8a57eda3e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4322048
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
d6a25bfa
|
2023-03-07T15:06:10
|
|
Vulkan: Optimize glBufferData call to improve storage reuse
If app calls glBufferData with certain size, then calls it again with
size 0, and then call it again with same old size again, we should try
to reuse the existing storage. When size is zero, with the existing
logic, we never free the storage. When glBufferData is called third time
with the same size as the first glBufferData call, we expect to reuse
the existing storage. But because of the storage reuse logic is
comparing buffer's new size to the old size (which is 0), we missed the
opportunity to reuse the existing storage. This CL update the reuse
logic so that it checks the new size against storage's size (instead of
OpenGLES buffer's size) and if we will end up with same sized allocation
and same pool and memory type, then we reuse instead of reallocate.
This reduces efootball_pes_2021 frame time from 4.670 ms to 4.277 ms on
pixel 7 pro.
Bug: b/271915956
Change-Id: I6f91e3e85b104eca215b28e7d0bea413ecc4401c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4317488
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
67ad3ddc
|
2023-03-06T16:44:36
|
|
Vulkan: Relax size limit for dynamicBuffer to pick buddy algorithm
If glBufferData's usage is one of the dynamic usage, app may keep
calling glBufferData frequently, which means get into suballocation code
frequently. There are two suballocation algorithms today: buddy
algorithm (faster) and generic (slower). Right now the decision of which
algorithm (i.e, which pool) to use is purely based on size or memory
type. This CL also utilize usage information so that dynamic usage will
pick buddy algorithm with bigger size threshold. mSmallBufferPool is
removed and replaced with the BufferPoolPointerArray that gets picked
based on allocation algorithm.
This CL reduces average frame time of efootball_pes_2021 from 7.518 ms
to 4.670 ms on pixel 7 Pro.
Bug: b/271915956
Change-Id: I1c2f270ac49f56e6f405501d20691cfbab49e7eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4313685
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4edccb15
|
2023-01-17T16:17:35
|
|
Vulkan: Fixed Context Priority mixing problems.
Problem details:
- Each "egl::ContextPriority" may have separate "VkQueue".
- "CommandQueue" only has two "PrimaryCommandBuffer"s for normal
and protected content.
- Commands from multiple "ContextVk" may be written
to a single "PrimaryCommandBuffer".
- That "PrimaryCommandBuffer" may be randomly submitted
to different "VkQueue"s.
- As the result - Commands from a single "ContextVk" may be submitted
to multiple "VkQueue"s.
Fix details:
- Created separate "PrimaryCommandBuffer" (lazily allocated)
for each "egl::ContextPriority".
- Commands with different priorities can't be mixed
in a single "PrimaryCommandBuffer".
- Therefore - Commands from a single "ContextVk" will be submitted
to a single "VkQueue".
- No difference for applications that use single "egl::ContextPriority"
for all Contexts.
Notes:
Another problem when resource is used in multiple Contexts with
different "VkQueue" (Priority).
One solution is to use Semaphores.
Another is to enfore same Priority for all Contexts in a Share Group
and Default Priority when using EGLImage.
This solution was submitted in the previous CL:
Vulkan: Enforce ContextPriority in ShareGroup and with EGLImage
Below test fails on G996B without this CL.
Bug: angleproject:8039
Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.ContextPriorityMixing*
Change-Id: Iaa57826ca55956944f922813fcfac42f1a764dbb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4194183
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cd901cdd
|
2023-03-03T17:04:27
|
|
Vulkan: Add and use rx::vk::ReleasableResource class.
This is a follow up for CL:
Vulkan: Enforce ContextPriority in ShareGroup and with EGLImage
Bug: angleproject:8039
Change-Id: I9e654557d4a1ce9aee4b04f1211eeb6ae3f0e482
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306721
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
233c128b
|
2023-01-17T19:21:58
|
|
Vulkan: Fix UBs when deleted attachment is used in a RenderPass.
Problem:
- "RenderbufferVk"/"TextureVk" with "mOwnsImage == false" used as
RenderPass attachment.
- "RenderbufferVk"/"TextureVk" deleted.
- Owning resource is destroyed ("EGLImage" and all siblings /
"EGLSurface").
- Crash (UB) may happen when ending RenderPass, flushing or executing
commands.
Fix adds tracking of "vk::ImageSourceID" value in
"vk::RenderPassAttachment" - IDs of objects, that originally provide
"vk::ImageHelper" images. This is necessary, because when using
EGLImage, there may be multiple "TextureVk" objects with same
"vk::ImageHelper", and need to call "finalizeImageLayout()" for the
correct attachment.
Bug: angleproject:8032
Test: angle_end2end_tests --gtest_filter=ImageTest*DeletedWhileInUse*
Test: angle_end2end_tests --gtest_filter=PbufferTest.UseAsFramebufferColorThenDestroy*
Change-Id: I50fdd9d6b6a9677adad2262373303b46de1dee4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4296014
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
eb1cb31d
|
2023-02-21T14:09:49
|
|
Vulkan: Remove code left after introduce of "vk::SharedGarbage"
This logic calls "flushImpl()" each time some "ImageVk" is orphaned,
regardless if it used in the RenderPass or not. Such undesired flushes
negatively affect CPU and GPU performance.
This flush was added in the very old commit:
e755a5374f7eb24da579fdc9862b01e3c3c04721
Vulkan: Add a new garbage type gated by fences.
Flush was necessary to grab a proper Fence.
However, after commit:
f10bf6bf55a78669bff7bb5cdd3ae0954a87661e
Vulkan: Implement multi-threaded GL.
Fence was replaced by "vk::SharedGarbage" and "vk::SharedResourceUse".
But "flushImpl()" was not removed along with misleading comment, that
it is necessary "to make sure the fence has been submitted".
This CL removes this leftover code. Any regressions should be fixed in
a better way.
Bug: angleproject:2464
Change-Id: I640bb2b9519c15a47adf30e0de845a3125ceab42
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4272834
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a1bf828d
|
2023-02-13T21:30:38
|
|
Vulkan: Rename "RendererVk::waitFor*ToBeSubmitted()" methods.
Following "RendererVk" methods are a little bit confusing:
- submitCommands()
- hasResourceUseSubmitted()
- hasQueueSerialSubmitted()
- waitForResourceUseToBeSubmitted()
- waitForQueueSerialToBeSubmitted()
Because after "RendererVk::submitCommands(..., submitQueueSerial)" call
"hasQueueSerialSubmitted(submitQueueSerial)" will always return "true".
And it is not clear why need to call "waitForResourceUseToBeSubmitted()"
method, if it already "Submitted". It is even more: it is technically
illegal to call "waitFor*ToBeSubmitted()" if "has*Submitted" is "false".
This refactoring suggests adding "ToDevice" to the methods names:
- waitForResourceUseToBeSubmittedToDevice()
- waitForQueueSerialToBeSubmittedToDevice()
So that:
- "Submitted" - will mean to the RendererVk (and maybe Device)
- "SubmittedToDevice" - definitely submitted to the Device.
Bug: b/267348918
Change-Id: I12323be3ddc0cbcff4667e52a37089b187b63fe8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4245423
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
b194c21a
|
2023-02-24T15:41:00
|
|
Vulkan: Enforce ContextPriority in ShareGroup and with EGLImage
This CL enforces single Context Priority for all Contexts in a Share
Group. This is necessary until Vulkan Semaphores will be used to
automatically synchronize Resource access between Contexts.
Contexts Priority updated when new Contexts is added to the Share Group.
New Priority will be the highest among all ever existed Contexts
(except if Priority is locked).
When Contexts Priority changes, all flushed commands are submitted to
the old VkQueue and semaphore is inserted into the new VkQueue.
Currently opened RenderPasses and commands will not be flushed.
When EGLImage is used in a Context, all Contexts in that Share Group
locked (forever) to the Default Priority (Medium). This is done to
simplify the implementation and because of the current limitations
(lack of mutex protection across Context Share Groups).
Notes:
- the EGL_CONTEXT_PRIORITY_LEVEL_IMG will report initial priority.
- below tests fail on G996B without this CL.
Bug: angleproject:8039
Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.RenderThenSampleDifferentContextPriority*
Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.RenderThenSampleInNewContextWithDifferentPriority*
Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.RenderThenSampleDifferentContextPriorityUsingEGLImage*
Change-Id: Ia6a2f0084d39168a58fd7ec33edc90ece9cead05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4289750
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
63a60225
|
2023-03-09T12:36:57
|
|
Ignore VUID-VkGraphicsPipelineCreateInfo-None-06573.
Occurring in certain trace tests after vulkan-deps update.
Bug: angleproject:8076
Change-Id: I267ff7ff5a41cdcfec44b11893877120d02a89ce
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4324721
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7ee61366
|
2023-03-09T16:18:56
|
|
Revert "Vulkan: SurfaceVk should only wait for GPU work that uses it"
This reverts commit 5b63e1dc1d5e96018d0ad30582265a612d309f3b.
Reason for revert: angle_deqp_internal_main_presubmit device lost in android rolls https://anglebug.com/8073
Original change's description:
> Vulkan: SurfaceVk should only wait for GPU work that uses it
>
> Right now when we destroy swapchain, we call mRenderer->finish() to
> finish everything, even though the work is unrelated to this surface.
> This CL changes it to only wait for ResourceUse of all images in the
> swapChain.
>
> Bug: b/267806287
> Change-Id: I33d136ad50961fbf5fbb200ff0f89f1dbf23585d
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4220723
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/267806287
Bug: angleproject:8073
Change-Id: Id0bfe7be670b7d44ed91e61f2c98a189bd1f214c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4324718
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
aa5b97de
|
2023-03-06T17:59:43
|
|
ANGLE_metal_shared_event_sync: Control signaling external events
It was assumed that the external MTLSharedEvent passed to eglCreateSync
should be signaled by the GL. This change adds
EGL_SYNC_METAL_SHARED_EVENT_SIGNALED_ANGLE, which when passed as the
value for EGL_SYNC_CONDITION during eglCreateSync, changes the behavior
to not insert a fence command into the command stream.
Test: angle_end2end_tests --gtest_filter=EGLSyncTestMetalSharedEvent.AngleMetalSharedEventSync_WaitSync_ExternallySignaled
Bug: angleproject:8064
Change-Id: Ia1b8615b976f293d411b7d2be506b0ac87d64dee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4307152
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
|
|
244e1931
|
2023-01-17T19:22:10
|
|
Vulkan: Fix use of pending Outside RenderPass CommandBuffer.
Regression from this commit:
730c127102b540ce2c4ec086b037c8b732706e26
"Vulkan: Submit queue more often for texture data"
Bug: angleproject:6354
Test: angle_end2end_tests --gtest_filter=*SubmittingOutsideCommandBufferAssertIsOpen*
Change-Id: I5f72f499cd7153c94c8e5f8a3415df2182726c8e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4296802
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
156efe9e
|
2023-02-23T14:07:23
|
|
Fix the alloc error with enabled backtrace feature
When angle_enable_unwind_backtrace_support is enabled, an assertion
occurs on memory allocation with the following message:
"constructed value does not match the lookup key"
The assertion comes from PolicyTraits::apply() in the hash map.
* In MemoryTracking.h, the type of mMemoryAllocationRecord is now
std::unordered_map instead of angle::HashMap.
Bug: b/262029018
Change-Id: I11a6d8e99a129759c046e37cef9e74f7db193066
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4289947
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
b0d99f72
|
2023-02-22T13:48:16
|
|
Move the memory tracking classes to new files
* Moved the classes, functions, and constants related to memory
tracking to MemoryTracking.h and MemoryTracking.cpp. Main classes
include the following:
* MemoryAllocationTracker
* MemoryReport
* MemoryAllocationType
* MemoryAllocationInfo
* MemoryLogSeverity
* New static function added in RendererVk to get the Vulkan object
type name (GetVulkanObjectTypeName()).
Bug: b/262029018
Change-Id: I619001e3c24114c4fe7bf024498338bce146fced
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4284639
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
877cd04c
|
2023-03-02T10:24:14
|
|
Reland "Add vulkan format image fallback for R16G16B16"
Suppressed misbehaving trace test in https://crrev.com/c/4317088
This is a reland of commit 71f6d54c8d3662693283281651e57c994a10cf08
Original change's description:
> Add vulkan format image fallback for R16G16B16
>
> This change adds a vulkan format image mapping fallback from R16G16B16
> to R16G16B16A16, R32G32B32_FLOAT and R32G32B32A32_FLOAT for both
> UNORM and SNORM variants.
>
> This is done because in Chrome we want to use R16/RG16 formats which
> are exposed to Skia over the EXT_texture_norm16. Currently,
> EXT_texture_norm16 requires RGB16_EXT which if not present is not
> supported even if R16_EXT and RG16_EXT are supported. This fallback
> helps us support R16/RG16 as well over RGBA16.
>
> It also updates validationES checks for GL_RGBA signed and unsigned
> normalized checking if type is GL_SHORT or GL_UNSIGNED_SHORT.
>
> It adds a method LoadToFloat that allows a type (GLushort or GLshort)
> to be loaded into float format types. This is then used as part of
> fallbacks for load_functions_data.json.
>
> Bug: None
> Change-Id: I5c6879cd2ed5dd6e3440877f4891f269d96d88a1
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4294694
> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: None
Change-Id: I101dd9e8c62e6794692c9f89c4944297e195f710
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4317089
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
1174582a
|
2023-03-06T00:00:00
|
|
GL: Implement EXT_clip_control
The extension is trivially exposed
if the current context supports it.
* Added packed clip control enums
* Removed unused state query code
* Aligned symbol names with the specs
Bug: angleproject:8066
Change-Id: I9d106f39800658ecc75f4525ee93cb534dc49f9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306770
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ad7949c6
|
2023-01-17T19:24:59
|
|
Vulkan: Remove "rx::vk::ImageHelper" move constructor.
Move constructor was only used in the "rx::SwapchainImage" structure.
This CL replaces "image" member with "std::unique_ptr<vk::ImageHelper>".
This will remove source of bugs.
Bug: angleproject:8052
Change-Id: Ic16f674095233baaa56fbe8a8fb7ef3e323a7331
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4294905
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
267c556e
|
2023-03-06T18:03:36
|
|
Vulkan: Move PersistentCommandPool out of the CommandsState.
Refactoring before the actual fix.
Bug: angleproject:8039
Change-Id: Ib240cb9a2e9b92eab120c946b15ac285b939c7db
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4307875
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8abf7153
|
2023-03-01T00:00:00
|
|
GL: Complete EXT_blend_func_extended
* Increased test threshold to 2 to
avoid failures on some GPUs
* Skipped desktop name bindings when
running on OpenGL ES
* Adjusted extension exposure conditions
to avoid failures on older platforms
* Adjusted webgl_FragData array size
Bug: angleproject:1085
Bug: angleproject:2833
Change-Id: Ic72ba42b024de276d3586446e03013e6063d15ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4307122
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
ac8513fa
|
2023-03-03T16:10:32
|
|
Vulkan: Add and use ScopedQueueSerialIndex helper class.
This is a follow up for CL:
eb0475c05425d94a4516b708c1c9075e3bc423a7
Vulkan: Cleanup RendererVk::allocateQueueSerialIndex method.
Made private "allocateQueueSerialIndex(SerialIndex *)" method and
renamed to "allocateQueueSerialIndexImpl" to limit incorrect API usage.
Bug: b/267806287
Change-Id: I4d1a9875d454c29f930a5e844161d2a10dc2675b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306720
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4256c022
|
2023-03-01T00:00:00
|
|
Metal: Implement ANGLE_stencil_texturing
Used texture views to sample stencil values
from combined depth/stencil textures.
Texture2DDepthStencilTestES3.TexSampleModes* tests
were split into swizzled and non-swizzled variants
to suppress only swizzled cases on some platforms.
Added a new avoidStencilTextureSwizzle workaround to
skip creating swizzled texture views of stencil-only
textures on platforms that fail to sample from them.
Fixed: angleproject:8051
Change-Id: I0b1148f8d30fc6459239efcdaeee6c0364633cc8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4304058
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b3178411
|
2023-03-07T15:08:46
|
|
Revert "Add vulkan format image fallback for R16G16B16"
This reverts commit 71f6d54c8d3662693283281651e57c994a10cf08.
Reason for revert: crashing win-trace
https://ci.chromium.org/ui/p/angle/builders/ci/win-trace/3527/overview
Also reproducible on Linux:
% src/tests/capture_replay_tests.py --gtest_filter="Texture2DNorm16TestES3.TextureNorm16R16
Original change's description:
> Add vulkan format image fallback for R16G16B16
>
> This change adds a vulkan format image mapping fallback from R16G16B16
> to R16G16B16A16, R32G32B32_FLOAT and R32G32B32A32_FLOAT for both
> UNORM and SNORM variants.
>
> This is done because in Chrome we want to use R16/RG16 formats which
> are exposed to Skia over the EXT_texture_norm16. Currently,
> EXT_texture_norm16 requires RGB16_EXT which if not present is not
> supported even if R16_EXT and RG16_EXT are supported. This fallback
> helps us support R16/RG16 as well over RGBA16.
>
> It also updates validationES checks for GL_RGBA signed and unsigned
> normalized checking if type is GL_SHORT or GL_UNSIGNED_SHORT.
>
> It adds a method LoadToFloat that allows a type (GLushort or GLshort)
> to be loaded into float format types. This is then used as part of
> fallbacks for load_functions_data.json.
>
> Bug: None
> Change-Id: I5c6879cd2ed5dd6e3440877f4891f269d96d88a1
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4294694
> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: None
Change-Id: I8373aee3a1d2c2279a3882ff7203d88483e29f4e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4316422
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
cee1237c
|
2023-03-06T15:39:03
|
|
Vulkan: Fix reserved UBOs for default uniforms
Only 3 were reserved, which is not correct with tessellation support
included.
The limit is now adjusted based on whether geometry and/or tessellation
is supported.
Bug: angleproject:6858
Change-Id: I7530a60b4b6bc9d4f4561303615c52c63bab1045
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4312559
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
868b63ab
|
2023-03-06T15:21:25
|
|
Vulkan: Remove reserved UBO for driver uniforms from limits
ANGLE no longer uses UBO for driver uniforms, but uses push constants
instead.
Bug: angleproject:6858
Change-Id: I3e01c75a19bb333428f2dd1cd732022f1e740c4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306885
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
991fca06
|
2023-03-06T10:31:48
|
|
Vulkan: Minor clean up in CommandProcessor.cpp
Minor clean up per the feedback from already merged CLs.
Bug: b/255411748
Change-Id: I3d0148700cf79fa597e260e7192d419198f9749f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4311756
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5331491b
|
2023-03-06T17:26:30
|
|
SYNC-HAZARD-READ-AFTER-WRITE: VkNonDispatchableHandle on x86
Also link to the new bug.
Bug: angleproject:8054
Change-Id: I2421d625f64a2530768ea35497a45091a0317025
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4312523
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
5b63e1dc
|
2023-02-03T15:14:00
|
|
Vulkan: SurfaceVk should only wait for GPU work that uses it
Right now when we destroy swapchain, we call mRenderer->finish() to
finish everything, even though the work is unrelated to this surface.
This CL changes it to only wait for ResourceUse of all images in the
swapChain.
Bug: b/267806287
Change-Id: I33d136ad50961fbf5fbb200ff0f89f1dbf23585d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4220723
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
569a881f
|
2023-03-06T16:43:18
|
|
Make SYNC-HAZARD-READ-AFTER-WRITE case less specific.
SYNC_VERTEX_SHADER_SHADER_STORAGE_READ
added in https://crrev.com/c/4306772
Different prior_usage in TransformFeedbackTest
Bug: angleproject:8054
Change-Id: Ia79fc0edd52dff49255906158a5621d4860d7df5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4313319
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
8ba78abd
|
2023-02-28T11:16:08
|
|
Reland "MSRTSS uses AppendToPNextChain due to non-NULL pNext."
Also fix msrtss->pNext being set to a pointer to a pointer
(void* yay!)
This is a reland of commit 33df630f9c8944061902b2e38fe65b280f731802
Original change's description:
> MSRTSS uses AppendToPNextChain due to non-NULL pNext.
>
> As discussed in:
> https://chromium-review.googlesource.com/c/angle/angle/+/4116675/comment/3097cb31_16922d39/
>
> Not currently causing issues as it requires very recent drivers but I
> saw the `ASSERT(ptr->pNext == nullptr);` in AddToPNextChain fail
> somewhere.
>
> Bug: angleproject:7899
> Change-Id: Id46162a5aacd3d8599382ce1dfca25aca5e730e1
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4296801
> Auto-Submit: Roman Lavrov <romanl@google.com>
> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bug: angleproject:7899
Change-Id: I597b6633123f161e05e1a5a28b2e8c6c61835e29
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306827
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
dbece66f
|
2023-01-17T19:25:24
|
|
Vulkan: Fix move constructor/assignment of Resource classes.
Bug in "DynamicallyGrowingPool<Pool>::PoolResource" causes real problems
with queries. "QueryPool" may be reused without waiting for the previous
use.
Bugs "QueryHelper" may affect "mInFlightGpuEventQueries" (not used in
"QueryVk").
Updated "FramebufferHelper" move assignment so it uses "Resource"
assignment instead of protected member access.
Bug: angleproject:8053
Change-Id: I441b62102fcf232456027fb42eefa97ed8958676
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4300050
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
7eb6869a
|
2022-08-30T16:28:08
|
|
Vulkan: Change ResourceAccess::Write to ResourceAccess::ReadWrite
AS a preparation for the next CL which will optimize for WriteOnly
access, this CL changes Write to ReadWrite and adds WriteOnly access
(but not used yet). Mechanical changes only and no function difference
is expected.
Bug: b/243711628
Change-Id: I509d6045ae87635e24076b646af42f35d88d52cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3866672
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
4f87f4e9
|
2023-03-03T13:19:09
|
|
Vulkan: Add useResetCommandBufferBitForSecondaryPools feature.
Currently ANGLE does not use "vkResetCommandBuffer()" on Vulkan
Secondary Command Buffers. Instead it uses "vkFreeCommandBuffers()" and
"vkAllocateCommandBuffers".
According to spec, "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT" is
required only for command buffer reset operations.
However, some ARM drivers may not free memory in
"vkFreeCommandBuffers()" without this flag.
Bug: angleproject:8059
Change-Id: Ibfe45bca345dc48484b625c450369d30805cec77
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306722
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
0eea2893
|
2023-03-03T18:55:21
|
|
Vulkan: Use *_POOL_CREATE_TRANSIENT_BIT in OneOffCommandPool
Bug: angleproject:8061
Change-Id: Ib1f851e83e681ee369cac8da0ff52cd3951c5749
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306724
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
390fa116
|
2023-03-06T10:51:24
|
|
Suppress another SYNC-HAZARD-READ-AFTER-WRITE case.
Starts at:
https://github.com/KhronosGroup/Vulkan-ValidationLayers/commit/dd401219bdb982046bb235160c29643c597d6f16
--gtest_filter='MemoryBarrierBufferTest.TransformFeedbackBitWriteThenCapture/ES3_1_Vulkan_SwiftShader*'
Bug: angleproject:8054
Change-Id: Ie57665a757c6664a29d351d43fbad9e4743b57f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306772
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
71f6d54c
|
2023-03-02T10:24:14
|
|
Add vulkan format image fallback for R16G16B16
This change adds a vulkan format image mapping fallback from R16G16B16
to R16G16B16A16, R32G32B32_FLOAT and R32G32B32A32_FLOAT for both
UNORM and SNORM variants.
This is done because in Chrome we want to use R16/RG16 formats which
are exposed to Skia over the EXT_texture_norm16. Currently,
EXT_texture_norm16 requires RGB16_EXT which if not present is not
supported even if R16_EXT and RG16_EXT are supported. This fallback
helps us support R16/RG16 as well over RGBA16.
It also updates validationES checks for GL_RGBA signed and unsigned
normalized checking if type is GL_SHORT or GL_UNSIGNED_SHORT.
It adds a method LoadToFloat that allows a type (GLushort or GLshort)
to be loaded into float format types. This is then used as part of
fallbacks for load_functions_data.json.
Bug: None
Change-Id: I5c6879cd2ed5dd6e3440877f4891f269d96d88a1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4294694
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|