|
c60e247e
|
2024-06-04T17:40:26
|
|
Make LinkedUniform.getElementComponents() fully inline-able
Before this CL, getElementComponents() calls into
GetUniformTypeInfoFromIndex() which cannot be inlined as it
uses kInfoTable from uniform_type_info_autogen.cpp.
That table is fairly large however, so this CL adds the
elementComponents part of that structure
to an inlinle GetUniformElementComponents() function.
This allows to fully inline LinkedUniform.getElementComponents()
which significantly simplifies clampUniformCount() assembly code,
to the point where this leads to a (small but) measurable
performance improvement in driver_overhead_2 trace despite
getElementComponents _never actually getting called_ (because count
is always == 1 and clampUniformCount returns early). This appears
to be caused by a side effect of the function call, where clang
generates prologue and epilogue instructions that are still
executed on the fast path when the function is not getting called
(even if ANGLE_LIKELY is added or code rearranged).
Bug: b/335295728
Change-Id: If8f2068b098576246ab90ffbacd5a520cc843f49
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5597885
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7d65c945
|
2024-06-06T09:01:40
|
|
Vulkan: Limit SSBO max size to 256MB on older Mali GPUs
Bug: angleproject:345244067
Change-Id: I18ff10198fc3db3a82a0897319fba5fb200a2a05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5603109
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
305bdec9
|
2024-06-06T00:00:00
|
|
Add TextureTestES31.Texture2DLayered test
Bug: angleproject:344950165
Change-Id: I4d59c12fd7dbe214e52eea498c93171fade82096
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5600864
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
147ba459
|
2024-05-30T00:00:00
|
|
Allow polygonMode* commands with active PLS
Drive-by:
* Test that polygonOffsetClampEXT
is allowed when PLS is active.
Fixed: angleproject:345253437
Change-Id: I5d9f60b3e70eaf8da19017a8b9d6c2592cb4f4f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5601849
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b93af07a
|
2024-05-31T11:36:32
|
|
Reland "Vulkan: Defer texture data flush until data provided for all levels"
This is a reland of commit 490c056a88a33870cb4ba2a7906b0a9688d96262
Original change's description:
> Vulkan: Defer texture data flush until data provided for all levels
>
> One of the major overhead with VkEvent is seeing with first frame where
> all textures are being specified. The immutable textures, we always
> immediately flush out the update as data provided for each level. This
> means one VkEvent is created and SetEvent is called per level. This CL
> delays the flush until data for all levels are provided, thus there is
> only one flush per texture instead of per level. With this CL asphalt_9
> is no longer timeout on bots when VkEvent is enabled.
>
> There is also another benefit comes with this CL. On all desktop GPUs,
> ASTC format texture are falling back to RGBA8. We always stage a clear
> for the emulated format. That staged clear are able to be removed if
> data is provided later. Because of we flush out staged update when first
> level data is provided, all staged clear for the subsequent levels are
> also gets flushed out, losing the chance to be removed. This CL will
> allow all staged clears being removed.
>
> Bug: b/343976993
> Bug: b/336844257
> Change-Id: Ica731ea57db771b16966f4da92ccdc551ae93d81
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5588816
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/343976993
Bug: b/336844257
Change-Id: Ie987582a44e0d73abd38ce8f6813ff8995e907e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5597810
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
b0eff196
|
2024-06-04T20:03:40
|
|
capture_replay_tests: Skip forceRobustResourceInit failures
These tests fail when forceRobustResourceInit is enabled, regardless
of capture status.
They were previously skipped:
https://chromium-review.googlesource.com/c/angle/angle/+/3118549
and then were removed (perhaps inadvertently):
https://chromium-review.googlesource.com/c/angle/angle/+/3291643
They started failing again after a CL that affects the timing of
texture updates (http://crrev/c/5588816), were likely just getting
lucky, so lets return them to SKIP.
Bug: b/345024038
Bug: angleproject:6314
Change-Id: I370502bf9f293a29f7535b04741e47843bffb937
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5599918
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
6968848e
|
2024-05-30T00:00:00
|
|
Remove PLS checks from GLES 1.x entry points
Fixed: angleproject:345125742
Change-Id: If845ddb654221cfb88c3f69bb98e07dbee8b6b39
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5598770
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6aad8a89
|
2024-05-31T14:46:28
|
|
Vulkan: Remove combineAllShadersInPipelineLibrary
If we have VK_NULL_HANDLE as the descriptor set layout handle for both
pre-rasterization and fragment shader subset pipelines
we run into VVL - VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681
Need to work around this by having the renderer store a placeholder
descriptor set layout handle for an empty DescriptorSetLayoutDesc
that can be reused across all contexts
Bug: angleproject:8677
Tests: EGLMultiContextTest.NonSharedContextsReuseDescritorSetLayoutHandle*
Change-Id: I22e7f39c497d7f668afe7cb26690f6a9de49831b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5587990
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@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>
|
|
1ecb9ba3
|
2024-06-03T18:04:34
|
|
Vulkan: Make logging GLES32 ext conditional
* Added the following flag:
* kEnableLogMissingExtensionsForGLES32
* Only if enabled will LogMissingExtensionsForGLES32() log missing
extensions required for GLES 3.2.
Bug: b/344455232
Bug: b/336860504
Change-Id: I1b10212b0b67e61a0884b1d8af1bb395e693323c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5595319
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
68a899c2
|
2024-06-04T12:02:06
|
|
Vulkan: Remove shaderProgramOut from initGraphicsShaderPrograms
- Remove `shaderProgramOut` from `ProgramExecutableVk`
`initGraphicsShaderPrograms()` method, because in all instances
argument was `nullptr` (unused).
- Update `ProgramInfo::getShaderProgram()` to return reference instead
of pointer. This removes confusion, causing unnecessary ASSERTs that
checked result for `nullptr`.
Note: CL that removed last use of `shaderProgramOut`:
https://chromium-review.googlesource.com/c/angle/angle/+/5408796
Bug: angleproject:8297
Change-Id: Idf9fb1c3fd42e90dd385f48a5714ea2751f0c7db
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5596549
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d0280f09
|
2024-06-03T13:21:06
|
|
Cleanup Program Executable post link task wait
Frontend changes:
- Add `ASSERT` into `ProgramExecutable::waitForPostLinkTasks()` to
check that `mPostLinkSubTasks` must be empty after backend wait.
- Add `UNIMPLEMENTED` into `ProgramExecutableImpl`
`waitForPostLinkTasks()`, because this method is only required if
backend fills `postLinkSubTasksOut` in `LinkTask`, and frontend must
not call this method if `mPostLinkSubTasks` are empty.
Vulkan backend changes:
- Add public `ProgramExecutableVk::waitForComputePostLinkTasks()`
with ASSERT to only allow usage with Compute executable.
This change avoids confusion calling
`waitForPostLinkTasksIfNecessary()` with `nullptr` in case of the
Compute pipelines, which will always wait.
- Rename `waitForPostLinkTasksIfNecessary()` to
`waitForGraphicsPostLinkTasks()`, add ASSERT to only allow usage
with Graphics executable, and change optional pointer to the
`GraphicsPipelineDesc` to the reference.
- Add `WaitableEvent::AllReady()` check into `ProgramExecutableVk`
`waitForGraphicsPostLinkTasks()` when going to skip waiting, in
order to process tasks (by calling wait) when all tasks are ready.
Without this change, post link task may never be processed, causing
repeated `GraphicsPipelineDesc` comparisons.
- Replace `GraphicsPipelineDesc` hash comparison in
`waitForGraphicsPostLinkTasks()` with `keyEqual()` call. This
method is around 7 times faster, however effect on the overall
performance will likely be unmeasurable. Changed for clarity.
- Remove unnecessary `mWarmUpGraphicsPipelineDesc` reset from:
`ProgramExecutableVk` initializer list (has default constructor),
Compute warmup (already clean after constructor), wait post link
tasks (not used when no tasks).
- Other minor changes.
Bug: angleproject:8297
Change-Id: I7d790da6712be013243083e314af75f82e73886d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5592474
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
25ebddb2
|
2024-06-04T09:47:53
|
|
Mark recently added test as flaky timeout
Bug: angleproject:332383430
Change-Id: I67fd00b2735362a9298152e6d23f903ba76a2ba0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5593280
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
c41cbb3d
|
2024-06-03T18:59:27
|
|
Fix binary is not cached after isBinaryReady() is true
Backend may wait and clear `mPostLinkSubTasks`. The `isBinaryReady()`
will check, that there are no tasks, and will skip the caching.
This change renamed `cacheProgramBinaryIfNotAlready()` to more general
`cacheProgramBinaryIfNecessary()`, because it skips caching if there
are post link tasks.
The `cacheProgramBinary()` renamed to
`cacheProgramBinaryIfNotAlready()`, to better reflect it's behavior.
Call `cacheProgramBinaryIfNotAlready()` from `isBinaryReady()` if there
no post link tasks to ensure binary is cached.
Removed check for empty `mPostLinkSubTasks` before calling executable's
wait, because same check already performed internally. The
`waitForPostLinkTasks()` is not on hot path and does not require
avoiding no-op method call.
Bug: angleproject:8297
Change-Id: I2bd78c15231805cda4b62a9889287d8cf780cd1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5593928
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
170851ff
|
2024-06-04T09:01:11
|
|
Revert "Vulkan: Defer texture data flush until data provided for all levels"
This reverts commit 490c056a88a33870cb4ba2a7906b0a9688d96262.
Reason for revert: breaks win-trace
https://ci.chromium.org/ui/p/angle/builders/ci/win-trace/6014/overview
Original change's description:
> Vulkan: Defer texture data flush until data provided for all levels
>
> One of the major overhead with VkEvent is seeing with first frame where
> all textures are being specified. The immutable textures, we always
> immediately flush out the update as data provided for each level. This
> means one VkEvent is created and SetEvent is called per level. This CL
> delays the flush until data for all levels are provided, thus there is
> only one flush per texture instead of per level. With this CL asphalt_9
> is no longer timeout on bots when VkEvent is enabled.
>
> There is also another benefit comes with this CL. On all desktop GPUs,
> ASTC format texture are falling back to RGBA8. We always stage a clear
> for the emulated format. That staged clear are able to be removed if
> data is provided later. Because of we flush out staged update when first
> level data is provided, all staged clear for the subsequent levels are
> also gets flushed out, losing the chance to be removed. This CL will
> allow all staged clears being removed.
>
> Bug: b/343976993
> Bug: b/336844257
> Change-Id: Ica731ea57db771b16966f4da92ccdc551ae93d81
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5588816
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/343976993
Bug: b/336844257
Change-Id: I25854b855334c4cac1c2b40467d8e2ecb7661b8f
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5593935
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
af72bf7f
|
2024-05-24T15:00:44
|
|
ESSL -> WGSL: emit basic types
This emits dimensionless types (no vectors, matrices, arrays).
Function signatures will emit their return type (assuming it
is dimensionless).
Bug: angleproject:42267100
Change-Id: I0d2479f71408eb20b9c329a99c70a6bf6426a72f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5590384
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
490c056a
|
2024-05-31T11:36:32
|
|
Vulkan: Defer texture data flush until data provided for all levels
One of the major overhead with VkEvent is seeing with first frame where
all textures are being specified. The immutable textures, we always
immediately flush out the update as data provided for each level. This
means one VkEvent is created and SetEvent is called per level. This CL
delays the flush until data for all levels are provided, thus there is
only one flush per texture instead of per level. With this CL asphalt_9
is no longer timeout on bots when VkEvent is enabled.
There is also another benefit comes with this CL. On all desktop GPUs,
ASTC format texture are falling back to RGBA8. We always stage a clear
for the emulated format. That staged clear are able to be removed if
data is provided later. Because of we flush out staged update when first
level data is provided, all staged clear for the subsequent levels are
also gets flushed out, losing the chance to be removed. This CL will
allow all staged clears being removed.
Bug: b/343976993
Bug: b/336844257
Change-Id: Ica731ea57db771b16966f4da92ccdc551ae93d81
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5588816
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
d8c7c4be
|
2024-06-03T20:16:36
|
|
Manual roll VK-GL-CTS from fd5cc7b1e075 to d2d6aa656073 (30 revisions)
Manual roll requested by syoussefi@google.com
https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/fd5cc7b1e075..d2d6aa656073
2024-05-31 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-cts-4.6.4
into vk-gl-cts/main
2024-05-31 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.10
into vk-gl-cts/main
2024-05-31 javed@igalia.com Add coverage for image load/store of depth
formats
2024-05-31 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.8
into vk-gl-cts/main
2024-05-30 marcin.zajac@mobica.com Video capabilities EXT to KHR
2024-05-30 michal.jakubek@mobica.com Coverage for Ldexp, Frexp and Atan2
with subnormal floats
2024-05-30 spatibandlla@nvidia.com Components: Framework - Add native
support for QNX Screen
2024-05-30 marcin.hajder@mobica.com Port KC-CTS tests to VK-GL-CTS
(transform_feedback2_states), PART 7
2024-05-30 kamil.goras@mobica.com Split KHR-GL4x.texture_swizzle.smoke
and KHR-GL4x.texture_swizzle.functional test
2024-05-30 kamil.goras@mobica.com Split KHR-GL4x.copy_image.functional
test
2024-05-30 piotr.byszewski@mobica.com Add self-dependency to
resolve_image tests
2024-05-30 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.8
into vk-gl-cts/main
2024-05-29 yuxinhu@google.com Fix missing Android build dependencies
2024-05-29 yuxinhu@google.com Fix a wrong class type in
tcuTestLogParserJNI
2024-05-29 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-cts-4.6.4
into vk-gl-cts/main
2024-05-29 erik.faye-lund@collabora.com Update tests to cover BGRA8
formats
2024-05-24 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-cts-4.6.4
into vk-gl-cts/main
2024-05-24 boris.zanin@amd.com Additional testing for fp16
immediate/inline arguments
2024-05-24 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.8
into vk-gl-cts/main
2024-05-24 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.10
into vk-gl-cts/main
2024-05-24 david.heidelberg@collabora.com Correct
EGL_EXT_config_select_group extension query
2024-05-24 cturner@igalia.com Check transfer queue image granularity
requirements
2024-05-24 c.hambacher@samsung.com Fix bind_buffers_2 tests using
out-of-bounds vertices for non-maint5
2024-05-24 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkansc-cts-1.0.2
into vk-gl-cts/main
2024-05-17 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.10
into vk-gl-cts/main
2024-05-17 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.9
into vk-gl-cts/main
2024-05-17 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-cts-4.6.4
into vk-gl-cts/main
2024-05-17 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkansc-cts-1.0.2
into vk-gl-cts/main
2024-05-17 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.8
into vk-gl-cts/main
2024-05-17 syoussefi@google.com main: Run clang-format + remove de*
types
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll
Please CC angle-team@google.com,syoussefi@google.com on the revert to
ensure that a human
is aware of the problem.
To file a bug in ANGLE:
https://bugs.chromium.org/p/angleproject/issues/entry
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Bug: None
Tbr: syoussefi@google.com
Change-Id: Ib728f0df93a6cc8bf16bba4f24312bed5cc184a9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5594575
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f1f277fc
|
2024-06-03T10:26:30
|
|
Test: Fix crash in MultithreadingTestES3.SimultaneousBufferBind
The bug here is that thread0 stopped between
nextStep(Step::Thread0Ready) and waitForStep(Step::Thread1Ready)), and
then the thread 1 could run all the way to finish. Now when thread 0
wake up and resumes again, waitForStep will hit assertion.
This CL let thread 1 wait for thread 0 to finish to avoid getting into
this situation.
Bug: b/344053420
Change-Id: Ib75e6652feff55e7bb561cc284cdcb86a4852881
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5587993
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
62cdd74a
|
2024-05-29T19:27:02
|
|
Prepare deqp_support files for the removal of de* types
- The de* types were removed by the change:
https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+/1a09796462f70cfe2a6117f9bc6af6e3ef74e6ff
- This CL updates ANGLE accordingly. The change is generated by:
https://paste.googleplex.com/4847290045169664
- Reference:
https://github.com/KhronosGroup/VK-GL-CTS/blob/aefd5c09cacdb5a3320da717af6ec646d96c2379/format_all.sh#L17-L41
Notes:
- starting in patchset #10, the CL de-coulples the deqp_support updates
from the VK-GL-CTS DEPS advance.
Test: presubmit, and the problematic files mentioned in
http://b/343202259#comment3 are updated.
Bug: b/343202259
Change-Id: Idc374fa0873e9ddaafe4c9f861995952f2f5e7e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5580985
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Solti Ho <solti@google.com>
|
|
9ca4c0df
|
2024-05-31T23:08:26
|
|
Manual roll vulkan-deps from f7e762742da9 to d4f7e6e954db (1 revision)
Manual roll requested by solti@google.com
https://chromium.googlesource.com/vulkan-deps.git/+log/f7e762742da9..d4f7e6e954db
Also rolling transitive DEPS:
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers/+log/ff56cf67d3494eec1243cc4225d1667e9b3f90cd..e15fdd01eff029f2bf15e63970f2a7cebf2999b0
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-angle-autoroll
Please CC angle-team@google.com,solti@google.com on the revert to ensure
that a human
is aware of the problem.
To file a bug in ANGLE:
https://bugs.chromium.org/p/angleproject/issues/entry
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Note:
- in addition to the DEPS, this CL suppresses the VVL error.
Bug: angleproject:344031874
Bug: b/343202259
Change-Id: I145d09821ba1ae4adbefcf151d3a852f00c3f950
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5587991
Commit-Queue: Solti Ho <solti@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
a87ca02c
|
2024-05-31T11:18:52
|
|
Vulkan: change shouldUpdateBeStaged to shouldUpdateBeFlushed
All usage of shouldUpdateBeStaged() is actually a negate
if(!shouldUpdateBeStaged(...)) {doFlush();}. This CL changes
shouldUpdateBeStaged to shouldUpdateBeFlushed to make it easier to read.
The other change is that there is a distinction of a texture update must
be flushed and update prefer to be flushed. So shouldUpdateBeStaged()
logic has been split into two functions updateMustBeStaged and
updateMustBeFlushed. shouldUpdateBeFlushed simply because it is either
must be flushed or not mustBeStaged (proactively flush for performance
reason).
This CL is also a preparation for next CL. No actual behavior change is
expected here.
Bug: b/343976993
Change-Id: Icd9f57f43b6fb5761e9845cc6f27f9458073f905
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5588815
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
63ae42fc
|
2024-06-03T16:15:16
|
|
Skip end2end test on Linux Intel Vulkan
GLSLTest_ES31.TernaryOnStructsInDifferentBlockStorages
new test added in http://crrev.com/c/5570154 fails on Mesa 23.2.1
Bug: angleproject:342316794
Change-Id: I73ab54837643bf4b51c68b747439b85e887c2bc8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5593929
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
c8db5292
|
2024-05-31T19:35:32
|
|
Remove locks from most glUniform* calls
Note: only the Vulkan backend claims to be thread safe.
glUniform1i and glUniform1iv are kept locked as they might set samplers,
which is more complicated.
glUniformBlockBinding is a more complex state change with notifications.
Other glUniform functions simply call setUniformImpl() or
setUniformMatrixfv() in the vulkan backend, which as
https://crrev.com/c/5588853 and https://crrev.com/c/5592968 show only
update mDefaultUniformBlocks and mDefaultUniformBlocksDirty. This should
be thread-safe as long as the application is not creating race
conditions itself such as by changing the same object in parallel.
This should yield a significant improvement in the driver_overhead_2
benchmark which is heavy on such calls.
Bug: angleproject:8666
Bug: b/335295728
Change-Id: Iad1577b9ab2eb57b6a4599ec6d70fa90eb518e8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5588385
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5e66f6e4
|
2024-06-03T09:27:44
|
|
Vulkan: Make setUniformMatrixfv a free function
Same as https://crrev.com/c/5588853 but for matrices
const gl::ProgramExecutable and non-const output variables, makes it
clear that it only updates:
mDefaultUniformBlocks
mDefaultUniformBlocksDirty
Bug: angleproject:8666
Bug: b/335295728
Change-Id: Ie5a5d527bf314309860fc7ca193c2a32013e7872
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5592968
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
42a61f6e
|
2024-06-01T23:25:39
|
|
Vulkan: no longer need isVenus condition
All things needed by Venus have been upstreamed or gated behind the
actual hw driver backend.
Bug: None
Test: build
Change-Id: I5cec111aaeac5cc5cef05e199653489ee6dffc2d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5591469
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1fa6c020
|
2024-05-28T14:44:09
|
|
Vulkan: Add multisample line width query support
* As part of GLES 3.2 support, added support to query the following
through glGetFloatv():
* GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY
* GL_MULTISAMPLE_LINE_WIDTH_RANGE
* Added some tests to check the limits of the values above.
* Updated comment regarding ES 3.2 spec table number.
Bug: angleproject:42266081
Bug: b/336860504
Change-Id: I2c359bbb9003b3e76f342f7419477bdb1caaf88f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5576760
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
d353f2ce
|
2024-05-31T16:57:41
|
|
Vulkan: Check any robustness instead of EXT only
* Updated checks for robustnessEXT with robustnessAny(), which also
includes robustnessKHR.
Bug: angleproject:42262244
Change-Id: Ia79bc7f1a5ead29417eec0a5663b70d79c34ad56
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5587992
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ddd93740
|
2024-05-16T15:49:47
|
|
Vulkan: Extend GLES 3.2 extension requirements
* Added CanSupportGLES32() to extend the extension requirements for
GLES 3.2.
* The following function returns the extension list:
* GetRequiredGLES32ExtensionList()
* If any required feature is not supported, we must fall back to
GLES 3.1 (unless exposeNonConformantExtensionsAndVersions is
enabled).
* Added LogMissingExtensionsForGLES32() to log any missing
extension that is required for GLES 3.2.
* (Currently, if xfb extension is not supported and cannot be
emulated, we fall back to GLES 2.0.)
* (KHR_debug by default is marked as a supported extension in
the frontend. Therefore it is not added to the check.)
* In generateSupportedExtensions()
* CanSupportGPUShader5EXT() is now private to vk_cap_utils.cpp.
* Before checking if the max GLES version should be capped, we make
sure that the caps are initialized.
Bug: angleproject:42263905
Bug: b/336860504
Change-Id: Ib5d85df310c6ec7df6258d3ea430f9c365153fb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5544455
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1db5581d
|
2024-05-21T13:07:44
|
|
Implement KHR_robustness
* Added implementation for the validation layers for the
added functions, and updated some of the existing ones.
* The core functions require GLES 3.2.
* The KHR functions have been limited to GLES 2.0+.
* KHR_robustness requires GLES 2.0 and removes support
for GLES 1.1 for logistical reasons.
* Some functions require GLES 3.0 with this extension, which become
core in GLES 3.2.
* glGetnUniformuivKHR()
* Enabled robustnessKHR on several platforms.
* Added unit tests similar to ContextLostTest.BasicUsage for the new
cases.
* Added ContextLostTestES32 for the core usage in GLES 3.2.
Bug: angleproject:42262244
Change-Id: Id1425c39d9a1a66ae1a90048b673cb1ae391c0ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5555985
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
ce6232fc
|
2024-05-21T11:15:51
|
|
Add KHR_robustness
* From the spec, there are some differences between KHR_robustness
and EXT_robustness (already in use). In this CL, the following are
addressed:
* Updating the EXT suffixes
* Changing EXT to KHR for GLES
* Removing EXT for GL
* Adding GLGetnUniformuivKHR (no equivalent in EXT)
* Added GL_KHR_robustness to the list of extensions.
* The API implementations seem to be already in place.
* Validation functions will be updated in a follow-up CL.
Bug: angleproject:42262244
Change-Id: Ibbc1bc11ec08ac756f4a03d11f51ba1268d037a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5555984
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9137d9a9
|
2024-05-31T12:28:04
|
|
Vulkan: Make setUniformImpl a free function
const gl::ProgramExecutable and non-const output variables, makes it
clear that it only updates:
mDefaultUniformBlocks
mDefaultUniformBlocksDirty
Bug: angleproject:8666
Bug: b/335295728
Change-Id: I8851eb500c3e09e896d02c0f83b700cde2a1bbf1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5588853
Auto-Submit: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
d68395fe
|
2024-05-24T15:14:46
|
|
ESSL->WGSL: Emit basic function signatures
...signatures don't yet include types or parameters.
See WGSLOutput_test.cpp for a sample translation.
Bug: angleproject:8662
Change-Id: I93273156f72ba193441e737074bd1a8a054f2ea9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5582949
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Liza Burakova <liza@chromium.org>
|
|
e0541f1a
|
2024-05-29T11:36:56
|
|
Add skeleton traverser for outputting WGSL
Bug: angleproject:8662
Change-Id: I0d917c65692eb0f137c7e751f65f16312a4625f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5581744
Reviewed-by: Liza Burakova <liza@chromium.org>
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0cbc0fe4
|
2024-05-30T00:00:00
|
|
Add IncompatibleTexture end2end tests
Bug: angleproject:343922404
Change-Id: Ic96cc1e2493454844ef65ec799e1aba221d9f084
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5589245
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0508fc9b
|
2024-04-23T15:32:52
|
|
Reland "Cleanup: replace DirtyObjectType check with constexpr generator"
Avoid using lambdas with member function pointers which caused issues
on MSVC C++17.
This is a reland of commit 89caa0e1d99e45f3d6f355f6e14c147f8de3e0e5
Original change's description:
> Cleanup: replace DirtyObjectType check with constexpr generator
>
> Static assert was meant to avoid kDirtyObjectHandlers getting out of
> sync, but it doesn't achieve that goal as it's just comparing values
> with ints which is confusing.
>
> Replacing with constexpr generated std::array. C++20 allows to easily
> validate that all values are set by _not_ default-initializing
> `handlers`. C++17 makes it trickier, addeded static_assert on an
> additional static constexpr bool (silly but I can't find a more concise
> way)
>
> Bug: angleproject:8666
> Bug: b/335295728
> Change-Id: Idf9bbd087d09d5ba253a7587ce0503cae3fcf3a7
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5478231
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Roman Lavrov <romanl@google.com>
Bug: angleproject:8666
Bug: b/335295728
Change-Id: I62e66b700512e072ef10cc57a17e8837a534c0d5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5589285
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7ce42b42
|
2024-05-30T16:08:12
|
|
Skip Display::prepareForCall calls everywhere except Mac.
Display::prepareForCall was added for CGL and EAGL backends which need
to know when an EGL call on a new thread is about to happen. Making
this virtual call on all EGL calls on all platforms adds overhead
which we can avoid so compile out prepareForCall everywhere except Mac.
Bug: angleproject:8434
Change-Id: I7b50463ed405a73eb993e18eb4f83434b4a4fd6e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5582015
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0e892a02
|
2024-05-30T14:07:47
|
|
EGL: Move egl surface timing calls into tail calls.
eglGetCompositorTimingANDROID and eglGetFrameTimestampsANDROID can both
take a lot of driver time to execute proportional to ANGLE's
overhead.
Bug: angleproject:42266858
Change-Id: I9b991f74a261b45aeb2aaf133fca7d22cabc41f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5580877
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
11c92f77
|
2024-03-29T16:19:05
|
|
Vulkan: Optimize ProgramExecutable::shouldIgnoreUniform()
Increases GFX Bench offscreen driver overhead performance on
Samsung S24 S921B (locked frequencies)
6201 -> 6327 frames (+2%)
Regression commit:
Fix off-by-one bounds check on uniform location.
fba482b7107ccf3e178f6bf56b6b0285407ace3a
Bug: chromium:1504162
Bug: chromium:1484878
Change-Id: I164cbb9feeacd35979cc60aa3489252397a3e2bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5585896
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4ebb28d7
|
2024-05-30T11:36:58
|
|
Fix stack overflow crash by traversing a too-deep AST
This simply moves the check for a too-deep AST before the first attempts
to traverse the AST (i.e., `validateAST()`).
Bug: angleproject:343505104
Change-Id: Iafb658a30f74a666beab8c69745ca53d17d70dd3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5585186
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Auto-Submit: Scott M <mscott@apple.com>
|
|
67036978
|
2024-05-30T00:00:00
|
|
Update Intel PCI IDs
Synced with Mesa headers:
* Changed one EHL PCI ID
* Changed four ADL PCI IDs
* Added six more RPL PCI IDs
Fixed: angleproject:343037865
Change-Id: I5218c94265e33bb640e2c3109ce62e93255e8d28
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5580878
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4d4c99b1
|
2024-05-31T02:07:11
|
|
Metal: skip copying via parentTexture on iOS simulator.
iOS simulator has bug in [MTLTexture parentRelativeSlice] so don't use
it to upload data to the texture.
Bug: angleproject:343734719
Change-Id: I78cf0066c1120c04f9b62c30e280ad866c2096d7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5584042
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
818915a9
|
2024-05-27T10:53:35
|
|
PPO: Propagate dirty uniforms via mPPOProgramExecutables
This eliminates the need for ProgramUniformUpdated notification
Update mDefaultUniformBlocksDirty rather than just add a check to
hasDirtyUniforms, as mDefaultUniformBlocksDirty can then be used
elsewhere (for example, calcUniformUpdateRequiredSpace)
Also adds ProgramExecutable.mIsPPO flag for an easy check for PPO
without inspecting mPPOProgramExecutables
Bug: angleproject:8666
Bug: b/335295728
Change-Id: I7725d02460104997df5c89a54d0e5ef3c3079946
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5569184
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c33c6cd3
|
2024-05-27T00:06:18
|
|
Vulkan: Use OpSelect with all types with SPIR-V 1.4
SPIR-V 1.4 relaxes the types that can be used as arguments of OpSelect.
Previously, the types were limited to scalars and vectors, but since
SPIR-V 1.4, it's unrestricted.
Writing tests for this change, another bug was discovered where support
for structs and arrays with the ternary operator was disabled due to
ESSL 1.0, even though that support is mandatory in ESSL 3.2.
Bug: angleproject:342316794
Bug: angleproject:343218491
Bug: angleproject:3830
Change-Id: I6cff2f8178634369f773c4fb16a1ddde96928c8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5570154
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
34b832a3
|
2024-05-24T13:38:58
|
|
Vulkan: Add RefCountedEvent recycler
Previously the recycler was disabled due to race between resetEvent and
setEvent. This CL splits mFreeStack into two list: mEventsToReset and
mEventsToReuse. Events are first added to mEventsToReset list. Then at
OutsideRenderPassCommandBufferHelper::flushToPrimary time,
VkCmdResetEvents are added to reset all events in mEventsToReset list,
and that reset operation is tracked by mResettingQueue. When reset
command is completed, events moved into mEventsToReuse list. Since
access to renderer's RefCountedEventRecycler requires lock,
RefCountedEventCollector (a queue of events) is passed between
ShareGroupVk and renderer's recycler to minimize the locked access.
Bug: b/336844257
Change-Id: Iffac095729a81ba65a43df68cc9255d76e4be7c9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5576757
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
c53b3405
|
2024-05-25T02:50:27
|
|
Vulkan: Use OpCopyLogical with SPIR-V 1.4
When shaders copy structs and arrays, this instruction saves a lot of
churn in the SPIR-V.
Bug: angleproject:342316794
Bug: angleproject:343218484
Change-Id: I698a8d8ee8c15113e40602a0f4953726bc9a84f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5570152
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
018188c7
|
2024-05-28T14:44:14
|
|
Vulkan: Fix CachedPreferCoherent to actually require cached
VK_MEMORY_PROPERTY_HOST_CACHED_BIT should be in requiredBits instead of
preferredBits for CachedPreferCoherent buffer.
This again caused pixel6 test failures. flush() call is added right
after buffer allocation to fix the test failure. This likely is due to
the spec says " If a range of non-coherent memory is written by the host
and then invalidated without first being flushed, its contents are
undefined.".
Bug: b/339562049
Change-Id: Ie8529722bd03534598b03983ba447131573b1879
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5578276
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5137eb99
|
2024-05-27T01:38:23
|
|
Translator: Fix internal inconsistency with output init
When creating "zero" nodes, this transformation directly takes the
TType's from the variables being initialized. This means that
qualifiers such as invariant, as well as any associations with interface
blocks are retained in these constructors, which is not valid.
This can trip up the SPIR-V generator which does not expect constructors
to be qualified as such (i.e. assumes the TypeSpec to be the default).
Bug: angleproject:342866364
Bug: angleproject:342866374
Bug: angleproject:343011429
Change-Id: If5c38e18ce977bd0eb1a48e41c59f6199eb7d2e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5570155
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d1db33b9
|
2024-05-20T16:49:18
|
|
Vulkan: Cleanup EXT_sRGB_write_control support
Bug: angleproject:5075
Change-Id: I91f40aaeaf5ff661ee2e227b5b1bb30a5b400e46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5573396
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
9620d4d3
|
2024-05-23T16:12:52
|
|
Vulkan: Emit SPIR-V 1.4 where available
In preparation for optimizations possible for SPIR-V 1.4. This change
makes ANGLE output SPIR-V 1.4 if supported, and SPIR-V 1.3 otherwise.
It handles the following differences between the two versions:
- OpEntryPoint in SPIR-V 1.4 includes all global variables, as opposed
to SPIR-V 1.3 where only the Input and Output variables are listed
- Storage buffers use a dedicated storage class in SPIR-V 1.4
Bug: angleproject:342316794
Change-Id: I157ed46449ff2d0f14d284b883b4ddc1b4b46fd1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5565224
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
dd2780ad
|
2024-05-23T00:00:00
|
|
Write point size for SimpleStateChange tests that use points
Point rendering without specifying
gl_PointSize is undefined.
Fixed: angleproject:342671887
Change-Id: I7ad8fd1cfc5c4495647677665e4beb3464d2ce8a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5570938
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
6e5eed1c
|
2024-05-28T20:14:47
|
|
Suppress failing newly added deqp test on S22
The cases are failing on S22, per http://b/343202259#comment2
Test: presubmit
Bug: b/343202259
Bug: angleproject:341780527
Change-Id: I16fd8db65785c85df671ceddd19e480bd9672e2a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5576756
Commit-Queue: Solti Ho <solti@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
55c8c714
|
2024-05-23T17:26:24
|
|
Vulkan: Enable ABE emulation for Android
* Enabled emulating advanced blend equations for all Android devices
without VK_EXT_blend_operation_advanced.
Bug: b/336860504
Change-Id: I97bf654dc4058b5a92d7de32b1000fb7aff86828
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5567092
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3467f0f2
|
2024-05-20T16:24:53
|
|
Vulkan: Cleanup QCOM foveated rendering extensions support
Change removed `ContextVK::updateFoveatedRendering()` method because of
the following:
- Modifying `mGraphicsPipelineDesc` without also updating
`mGraphicsPipelineTransition` may case usage of incorrect PSO.
- Despite of the above, there is no bug, because the update itself
is redundant. In all cases, where `updateFoveatedRendering()` was
called, there also will be `onDrawFramebufferRenderPassDescChange()`
call, that will call `mGraphicsPipelineDesc->updateRenderPassDesc()`.
- The `onDrawFramebufferRenderPassDescChange()` will also call
`invalidateCurrentGraphicsPipeline()` therefore, there is no need for
this call in the `updateFoveatedRendering()`.
- In all cases, the `onRenderPassFinished()` is called before
`updateFoveatedRendering()`, therefore, there is no need to set
`DIRTY_BIT_RENDER_PASS` bit.
- All of the above made `updateFoveatedRendering()` completely
redundant (maybe except for the ASSERT).
Change also removed `mRenderPassDesc` update from
`FramebufferVk::updateFoveationState()`. Note: similar update may be
also removed when handling `shouldUpdateSrgbWriteControlMode`.
Also fixes possible `mFoveationState` and `mCurrentFramebufferDesc`
desynchronization in case if `updateFragmentShadingRateAttachment()`
fails.
Bug: angleproject:8484
Change-Id: If453bb6691e47aac3c11d0a5a6df696e885b64cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5573395
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
be78da6e
|
2024-05-22T15:33:46
|
|
FrameCapture: log end of trace capture
This makes it easy to spot when the capture is done through logcat.
Bug: angleproject:343190307
Change-Id: Idf174cbf256242e32cda3c781c8b1092123254bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5557966
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Bruno BELANYI <ambroisie@google.com>
|
|
ceaec322
|
2024-05-24T11:25:08
|
|
Vulkan: use depth stencil bits to check AHB are renderable
This resolves an incomplete attachment failure for AHB imported depth
buffers.
Bug: angleproject:342603523
Change-Id: I16ca0d1bfdab8d542ecf26e5a4e8510171960610
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5570617
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9b7d8d6a
|
2024-05-20T20:39:50
|
|
Vulkan: Fix AtomicRefCounted threading issue
The `AtomicRefCounted::getAndReleaseRef()` is used to decrement the
reference counter and to destroy the object if there are no more uses.
Decrement operation must use acquire-release memory ordering, in order
to guarantee that all accesses from other threads happened before last
thread checks that counter is "1" and destroys the object.
Added comments to `releaseRef()` and `isReferenced()`, that these
methods do not provide any synchronization, and can not be used to
achieve same affect as `getAndReleaseRef()`. Relaxed ordering is kept
for performance reasons.
Bug: angleproject:8601
Change-Id: I8e5654416383e9490c23bc02fda9664216a81076
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5573394
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
d3d96a37
|
2024-05-24T14:43:12
|
|
Add 'angle_always_log_info' option
This allows outputting `INFO`-level logs and up, without having to
trudge through the mountain of output that gets enabled by
`angle_enable_trace`.
Bug: angleproject:343190307
Change-Id: I88d4f0b48951f1c7cbdda4fce8ce309a25f43e3c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5569092
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
a3057eed
|
2024-05-27T14:48:51
|
|
Vulkan: DIRTY_BIT_DESCRIPTOR_SETS in handleDirtyUniformsImpl
For consistency between graphics and compute handling
Bug: angleproject:7103
Change-Id: If6db0739d2f75d9e8e77bf88a05466e56d165a0a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5574006
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
71e0038c
|
2024-05-27T14:50:09
|
|
Vulkan: Remove SwiftShader+AsyncCommandQueue tests
The AsyncCommandQueue feature is not shipping anywhere, especially not
with SwiftShader. Besides, the tests already run
Vulkan+AsyncCommandQueue tests. Additionally, SwiftShader still gets
exposure to this feature together with the EnableParallelCompileAndLink
feature.
Bug: angleproject:40644897
Change-Id: I34f0f76ef598f757d3af365777ebb91149b95be3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5574007
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7c5d2b81
|
2024-05-21T16:22:53
|
|
Vulkan: Add WarmUpTaskCommon::mExecutableVk initialization
Change is only for safety, because uninitialized member is not used in
the current code.
Bug: angleproject:8601
Change-Id: I65fa912119bc9c33a6248c5616388bde4d33b223
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5573393
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8db2d61a
|
2024-05-14T00:39:47
|
|
Metal: properly handle base/max level for immutable textures.
Previously, we treat every texture the same as a non-immutable texture.
Every texture has a native mtl::Texture containing mipmap levels from
base GL level to max GL level. And base GL level would be mapped to
level 0 of the native texture.
However, this is not correct for immutable textures, pbuffer or EGLImage
bound textures. Such textures have mipmaps pre-allocated either via
glTexStorage calls or externally. Base and max GL levels don't affect
their allocated mipmap levels, only limit the levels a shader can
sample.
For example, a texture has 8 levels allocated via glTexStorage. Its base
level is set 1, and max level is set to 2. Shaders will only be able to
sample from level 1 to level 2 of this texture. However, it's valid to
attach level 0 or level > 2 of this texture to an FBO.
This CL addresses this bug by separating internal mtl::Texture into two
main objects:
- A native storage will contain the actual mipmap levels of the
texture. FBO attachment or data uploads can refer to a level in this
object.
- A view of the native storage from base GL level to max GL level. This
view will be used in shader sampling and mipmap generations.
Bug: angleproject:6447
Bug: angleproject:8355
Bug: b/42265945
Change-Id: I186b69f02e9e40c75830ffe4b48bd5a3c8d49cf2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5531392
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Auto-Submit: Quyen Le <lehoangquyen@chromium.org>
|
|
b793888a
|
2024-05-09T11:40:18
|
|
Deeply nested switch statements -> ambiguous error
Improve the error reported (and potentially avoid a stack overflow
crash) when parsing deeply nested `switch` statements.
Limits the total number of nested switch and/or iterator statements to
`mMaxStatementDepth` (defaults to 256).
Bug: angleproject:8645
Change-Id: Iba4795db15c3859d172df8366bc7de3125c2d472
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5527630
Auto-Submit: Scott M <mscott@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
59adc191
|
2024-05-23T00:00:00
|
|
Metal: Ensure valid vertex buffer layout stride
Metal Validation causes runtime failures if the sum
of the vertex buffer binding offset and the related
vertex layout stride is greater than the buffer's
length.
Fixed: angleproject:342350849
Change-Id: I531f092c6130b37cb8b0b89b20804a222160ceb7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5565528
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
|
|
6cf3c96d
|
2024-05-23T00:00:00
|
|
Metal: Handle empty vertex buffers
Use the current attribute value when
the bound array buffer has no data
to avoid Metal Validation errors.
Drive-by: do not emit empty
client data upload commands.
Fixed: angleproject:40050025
Change-Id: I813725322c52bc16ca432f617a40fe7cee24dd6d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5569091
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
ad46d67d
|
2024-05-24T10:19:00
|
|
Suppress failing newly added deqp test on S22
Bug: angleproject:341780527
Change-Id: I274493f2b820b9ff007e93cfe41d04af5f3c5e09
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5568654
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
f3c52204
|
2024-05-24T16:46:01
|
|
Skip antutu_refinery on Linux Intel and AMD
Bug: angleproject:342545097
Change-Id: Id4cec570256dbfa13fc406ef31d4e714950f66d8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5570937
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
9742351b
|
2024-05-23T00:00:00
|
|
Move ConversionWithNoVertices to WebGL tests
Reliably passing the test requires either
extra validation or backend support.
Bug: angleproject:342419059
Change-Id: Ifd861f292b5d8f0eb63280a182842343078b7e0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5569094
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
dc470fa1
|
2024-05-24T12:10:34
|
|
HLSL: Initialize uninitialized storage-image-related data
Bug: chromium:342464439
Change-Id: I5664177ecd99fbae419bc00a17c0864e43f06776
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5570599
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
f0cdb3af
|
2024-05-24T15:14:49
|
|
Skip StateChangeTestES3.RasterizerDiscard on Win Intel
Bug: angleproject:342557702
Change-Id: Ifd79939f53efdc99ed8ec3784c737da87a13e5e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5569093
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
6f82959d
|
2024-05-23T00:00:00
|
|
Move OutOfBoundsByteAttribute to WebGL tests
Reliably passing the test requires either
extra validation or backend support.
Bug: angleproject:342419059
Fixed: angleproject:42265239
Change-Id: I29d3fff67a1d15941f18143d30bcb2c940f4e135
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5569089
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
066cde8b
|
2024-05-23T00:00:00
|
|
Move DynamicVertexArrayOffsetOutOfBounds to WebGL tests
Reliably passing the test requires either
extra validation or backend support.
Bug: angleproject:342419059
Change-Id: I0d167a08208888479b7fe17a0343c10667862454
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5565529
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7b0d26bb
|
2024-05-23T15:46:34
|
|
Vulkan: Disable VkEvent for images due to perf regressions
Bug: angleproject:336844257
Change-Id: I5732455a48f449f402dc114e019d1dc91142b59e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5565223
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
98402f33
|
2024-05-23T10:23:29
|
|
Vulkan: Explicitly set SPIR-V version
Bug: angleproject:342316794
Change-Id: Ide73e3d8b167a932338419cb9da3ea358058ebeb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5564203
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0d772ebe
|
2024-05-21T16:41:41
|
|
Vulkan: Cleanup releaseToExternal/acquireFromExternal API
This CL addresses some feedback from the earlier CLs.
Bug: b/337135577
Change-Id: I90c26a9374254af69bf00eb6580ce9580b71ca5a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5561465
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3bc4e17f
|
2024-05-22T16:15:23
|
|
Vulkan: Pack familyIndex and queueIndex into single uint16_t
Practically these are very small number. So we really don't need a
uint32_t for each index. The only trick is that even though these
indices are uint32_t, some of predefined values are ~1u/~2u which does
not fit uint8_t. In this CL, int8_t is used so that all these values are
properly downsized and expanded by compiler without branch.
Bug: b/337135577
Change-Id: I45ac8ea14c4d7a6f65cb012df70013050f725583
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5560510
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
44d98861
|
2024-05-17T23:55:13
|
|
Assertion under IdGen::createNewName.
Remove code that tries to workaround double underscores symbols name
that would be introduced if user defined symbols contain underscore
prefix or suffix. To avoid unexpected clashes case like '_Data' and
'Data'.
Bug: b/341206126
Change-Id: I59e72e59bf483c84f5e33a21f7737f82c31c6896
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5545479
Auto-Submit: Erica Li <lerica@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
ccd9a43b
|
2024-05-22T11:15:39
|
|
Split EGL_ANGLE_device_d3d into D3D9 and D3D11 versions.
Add EGL_ANGLE_device_d3d9 and EGL_ANGLE_device_d3d11 which make it
possible to know what type of device can be queried ahead of time
without generating EGL errors.
Refactor the DeviceD3D class into Device9 and Device11. Remove the
getType method now that it's not needed for internal validation.
Keep EGL_ANGLE_device_d3d for backwards compatibility.
Bug: angleproject:342096132
Change-Id: Ib950abad58e46a5be269891ea7afd0cb8534cbe8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5559163
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
602c0edf
|
2024-04-25T15:08:32
|
|
Vulkan: Enable VkEvent for Image barriers
This CL actually enables using VkEvent for image barriers. One problem
with event is that syncVal is super slow when event is used (it actually
slow with VkCmdSetEvent call). which causes a few tests
(KHR-GLES3.copy_tex_image_conversions.forbidden.renderbuffer_cubemap_*
and asphalt_9) to timeout. These tests did not show signicant overhead
with event with VVL disabled, which means the timeout is due to VVL
overhead. For now I am disabling syncVal when event is used for image
barrier. Since layers are configured before feature bits, a helper
function ShouldUseEventForImageBarrier() is introduced to have a central
logic enable/disable event. Right ow it just returns true. If we need to
disable for a given GPU, we need to pass in proper arguments here while
setting up the layers (not sure what exactly will be but will decide
when situation comes up).
Bug: b/336844257
Change-Id: Iffff8a895e7c767660d327ce9b9e90e6ae0652df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5492739
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d27c0f95
|
2024-05-21T16:27:08
|
|
Vulkan: Fix UNASSIGNED-SubmitValidation-WaitEvents-WrongQueue
Before this CL, when eventBarrier is used for images, we may see
UNASSIGNED-SubmitValidation-WaitEvents-WrongQueue VVL error. What
happens is that when context is created with medium priority and image
is used, we created VkEvent that was set on medium priority VkQueue.
Later on when a new context with higher priority is added to the share
group, we upgrade all contexts to high priority and all subsequent
commands will be submitted to high priority VkQueue. Now if the image is
used and we call VkCmdWaitEvent, we end up waiting on new VkQueue for an
event that was set on the old VkQueue. This violates the vulkan spec.
With all previous prepartion CLs, now Context and ImageHelper all keeps
track of which DeviceQueueIndex it was last used. We can just check the
DeviceQueueIndex and fallback to pipelineBarrier if they has changed.
When pipelineBarrier is used, the event will be released, and subsequent
event will be created on new queue. So this fallback should only occur
once for the ImageHelper objects that was experiencing the queue switch.
ImageHelper::barrierImpl already checking DeviceQueueIndex changes, so
this will automatically works for VkEvent. This CL only needs to add the
support for ImageHelper::updateLayoutAndQueue.
Bug: b/336844257
Change-Id: Ia3f1caee4f3c8e98dc858d387e93d3b2d6eb8053
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5556443
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
1a9a703b
|
2024-05-21T11:14:40
|
|
Vulkan: Add DeviceQueueIndex to Context/BufferHelper/ImageHelper
This CL adds a utility class DeviceQueueIndex, which encapsulates
queueFamilyIndex and the queueIndex into one integer value so that we
can pass around to barrier function. vk::Context and BufferHelper and
ImageHelper class now keeps mCurrentDeviceQueueIndex instead of
mCurrentQueueFamilyIndex. For All contexts by default it gets the
default queue from renderer (which is always the one corresponding to
Medium priority). For ContextVk, when priority changes it update
mCurrentDeviceQueueIndex to match new context priority.
Bug: b/337135577
Change-Id: I62cc483cfdb3e974d38db074e671c57299300074
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5555903
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b22cce5f
|
2024-05-21T10:55:27
|
|
Vulkan: Remove Renderer::getDeviceQueueIndex
Renderer::getDeviceQueueIndex() returns queueFamilyIndex. There is a
function that already returns mCurrentQueueFamilyIndex, so this function
is now removed.
This CL also renames ImageHelper::isQueueChangeNeccesary to
isQueueFamilyChangeNeccesary
Bug: b/337135577
Change-Id: I3cd9ded1414d1389e162aaa5399c231a987f871e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5553067
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9d124c35
|
2024-05-21T10:36:27
|
|
Vulkan: Store QueueIndex in DeviceQueueMap
VkGetDeviceQueue call takes two indices: queueFamilyIndex and
queueIndex. Right now DeviceQueueMap only stores queueFamilyIndex. This
CL also stores queueIndex in the DeviceQueueMap. In later CL, we are
going to expose this queueIndex to vk::Context and vk::ImageHelper along
with queueFamilyIndex.
In order to do it in a cleaner way, this CL mostly involves cleanup.
Previously DeviceQueueMap is a subclass of angle::PackedEnumMap. In this
CL, DeviceQueueMap has mQueueAndIndices data member that maps priority
to devicePriority/queueIndex/VkQueue.
Previously DeviceQueueMap was created in
Renderer::createDeviceAndQueue() and then passed to
CommandQueue::init(), which copies to mQueueMap. This CL removes the
copy. It now calls mQueueMap.initialize() directly from
CommandQueue::init().
This CL also cleans up relationship between QueueFamily and
DeviceQueueMap. Before this CL, QueueFamily::initializeQueueMap()
initialiazes DeviceQueueMap object. After this CL, that logic now moves
to DeviceQueueMap::initialize(). QueueFamily no longer modifies
DeviceQueueMap class.
No functional change is expected.
Bug: b/337135577
Change-Id: I3f96fb78aedc89d96d6235b060c88b769bdd1e24
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5553066
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
ea36ed34
|
2024-05-21T10:03:51
|
|
Vulkan: Rename mIndex to mQueueFamilyIndex
In preparation for the later CLs that expose the VkQueue index to
vk::Context, this CL renames mIndex to mQueueFamilyIndex so that we do
not confused what *index* really means. No functional change expected.
Bug: b/337135577
Change-Id: I6a089716a9586e9c404ec6c1d557a563dccf927c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5553086
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
073b7628
|
2024-05-21T21:49:37
|
|
Revert "Cleanup: replace DirtyObjectType check with constexpr generator"
This reverts commit 89caa0e1d99e45f3d6f355f6e14c147f8de3e0e5.
Reason for revert: compile errors on gcc and msvc c++17
Original change's description:
> Cleanup: replace DirtyObjectType check with constexpr generator
>
> Static assert was meant to avoid kDirtyObjectHandlers getting out of
> sync, but it doesn't achieve that goal as it's just comparing values
> with ints which is confusing.
>
> Replacing with constexpr generated std::array. C++20 allows to easily
> validate that all values are set by _not_ default-initializing
> `handlers`. C++17 makes it trickier, addeded static_assert on an
> additional static constexpr bool (silly but I can't find a more concise
> way)
>
> Bug: angleproject:8666
> Bug: b/335295728
> Change-Id: Idf9bbd087d09d5ba253a7587ce0503cae3fcf3a7
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5478231
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Roman Lavrov <romanl@google.com>
Bug: angleproject:8666
Bug: b/335295728
Change-Id: Ie272f09f0e21498848ac3ed6477dabf28aa3da42
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5554615
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b8c64f3e
|
2024-05-21T15:34:26
|
|
Fix build on compilers that get confused with templates - part 2
Bug: angleproject:8667
Change-Id: I1db327643f0b16bea5dc59635ac51c2398fdedf6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5554174
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e5fe13df
|
2024-05-20T11:03:49
|
|
Vulkan: Destroy VkEvent instead of putting into recycler
VVL is complaining about SYNC-vkCmdSetEvent-missingbarrier-reset (See
https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/8032). I
am not sure if the way I did VkCmdResetEvent followed by VkCmdSetEvent
is correct either. So destroy VkEvent instead of put it into recycler
for now until I sort this out.
Bug: b/336844257
Change-Id: I8baf87fa6f6e8c5ed9e2f7e0a29226caa85ebb31
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5549896
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
9ed415e5
|
2024-05-16T14:28:31
|
|
Vulkan: Clean up in ImageHelper::updateLayoutAndBarrier
There was a duplicated pipelineBarrier wait in
ImageHelper::updateLayoutAndBarrier that possibly come from bad code
merge. It is removed in this CL.
The check of hasEvent and subsequently call addAdditionalStageAccess has
moved out of addMemoryEvent and make its own function so that it only
affects the specific case where the image is used in different shader
stage in the *same* render pass.
Bug: b/336844257
Change-Id: I78b0c952be32124cb0fb6a2cf750df41f6c8259d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5544450
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
e83dd780
|
2024-05-21T12:08:38
|
|
Skip texture_lod_bias_all on tsan SwS
Flaky timeouts at 120s, green builds barely make it
https://ci.chromium.org/ui/p/angle/builders/try/linux-tsan-test/12609/overview
Bug: b/332383430
Change-Id: I4abde927b3cd42805164de0e0efd97835000ab71
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5554983
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
|
|
b257da86
|
2024-05-21T12:04:21
|
|
Fix build on compilers that get confused with templates
Bug: angleproject:8667
Change-Id: Ie3d35b617ceb5bb6c0e13e0dfda370bbe18d888a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5554982
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
c4d266cc
|
2024-05-17T15:07:43
|
|
Vulkan: Use std::deque for EventBarrierArray::mBarriers
Most time mBarriers is small, only ~1.5% time the vector size is greater
than 4. So more complicated optimization for it may not worth it. In
very rare time it could be over 100. But there is no need for storage to
be continuous, so switch to std::deque here so that the overhead for
occasionally large barrier array size won't be too bad.
Bug: b/336844257
Bug: b/293297177
Change-Id: I79b91128a1a9e460b9687862f00fed51e4258511
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5545884
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6f8b736e
|
2024-05-20T11:19:55
|
|
Manual roll VK-GL-CTS from 13344922ae81 to fd5cc7b1e075 (7 revisions)
https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/13344922ae81..fd5cc7b1e075
2024-05-17 marcin.hajder@mobica.com Run clip and cull distance tests on
OpenGL ES
2024-05-17 cturner@igalia.com Add coverage for transfer-only copies with
multiplanar formats
2024-05-17 lorenzo@khronosgroup.org Merge vk-gl-cts/vulkan-cts-1.3.8
into vk-gl-cts/main
2024-05-16 gleese@broadcom.com Remove 'decor' specialisation in SPIR-V
tests
2024-05-16 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-cts-4.6.4
into vk-gl-cts/main
2024-05-16 lorenzo@khronosgroup.org Merge vk-gl-cts/opengl-es-cts-3.2.10
into vk-gl-cts/main
2024-05-15 lorenzo@khronosgroup.org Merge remote-tracking branch
'vk-gl-cts/dev/VK_NV_raw_access_chains'
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll
Please CC angle-team@google.com,yuxinhu@google.com on the revert to
ensure that a human
is aware of the problem.
To file a bug in ANGLE:
https://bugs.chromium.org/p/angleproject/issues/entry
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Bug: angleproject:341780527
Tbr: yuxinhu@google.com
Change-Id: Idddeb19e94307f2313ab572432c547a76e0e7f91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5547022
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
a00babd8
|
2024-05-17T20:38:56
|
|
Vulkan: disable supportsShaderFramebufferFetchNonCoherent on Android
Not just ARM or QC, but also Intel and AMD are impacted. So just disable
this for Android as a whole since it's for app compat but not specific
to a particular impl.
Bug: b/340665604
Test: LIMBO, Diablo Immortal, Real Racing 3, etc are running properly
Change-Id: Id11ad4cd541166c9e6c6d84bb09d9c06a175d5a1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5547687
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Lepton Wu <lepton@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
519d6d7e
|
2024-05-15T15:08:54
|
|
Vulkan: Remove AMD deqp expectations
We no longer test on AMD. These expectations were added when AMD
drivers were very old, so they likely don't apply anymore anyway.
Bug: angleproject:3586
Bug: angleproject:3588
Bug: angleproject:5276
Bug: angleproject:7415
Change-Id: Ic7e172186abaf034ef28d87dfd40e21b8298e6ae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5539021
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c73d0776
|
2024-05-15T15:07:56
|
|
Vulkan: Enable ASTC tests on Nvidia
ANGLE emulates ASTC, so we are able to run these tests fine.
Bug: angleproject:6441
Change-Id: I641a729db5c00d203c857710b17754161251d785
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5539020
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
b4562086
|
2024-05-16T12:22:47
|
|
Vulkan: Remove std::vector from EventBarrier::mEvents
mEvents and mImageMemoryBarriers field of EventBarrier never being more
than 1. This CL removes std::vector and just store the handle.
Similarly max count for mImageMemoryBarriers is 1, so std::vector also
removed. mImageMemoryBarrierCount added (which can be either 0 or 1) to
indicate if mImageMemoryBarrier is valid or nullptr should be send to VK
driver.
Bug: b/336844257
Change-Id: Ib367c649d3a9d790c5e15d4129cde6673bca6cae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5545883
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
7cbac5de
|
2024-05-16T10:01:41
|
|
Vulkan: Switch RefCountedEventCollector to use std::deque
Right now it is using std::vector. The vector could potentially grow
big. The grow is costly with vector when storage has to resize. This CL
switches it to use std::deque.
Bug: b/293297177
Bug: b/336844257
Change-Id: Ia407e7d4e1b68bd0cb7cf76ccc5e7523c0e83415
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5545882
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
f82d812d
|
2024-05-16T15:46:05
|
|
Vulkan: Fix EventBarrier bug when asyncSubmission is enabled
Since we have moved RefCountedEvent garbage collection into
ShareGroupVk, we have changed the reference counting to use non-atomic.
There is a bug with async submission code path where the
executeSetEvents gets called from submission thread which does not have
share group lock. This CL fixes this bug by storing VkEvent in
RenderPassCommandBufferHelper so that executeSetEvents uses VkEvent
instead of RefCountedEvent when async submission is enabled.
This CL also adds assertion that RefCountedEvent::releaseImpl does not
get called from async submission thread.
Bug: b/336844257
Change-Id: Ifcbd5a09d2bc7636cc15b2c6728dbbca103d4d9c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5544449
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
2d0e92ee
|
2024-05-16T09:36:44
|
|
Vulkan: Let Recycler class use std::deque instead of vector
Vector is expensive when storage has to be expanded. The Recycler only
use the storage as a stack operation, there is no requirements of
storage being continuous, thus deque works perfectly.
Bug: b/293297177
Change-Id: I89f02b4a7e7f356942bb6606e3d38dcbdcc8bb4d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5545881
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
b71fe1c5
|
2024-05-16T15:10:09
|
|
Flatten vulkan-deps.
Sub-repos will be now checked out in third_party directly,
instead of under third_party/vulkan-deps.
Bug: chromium:341002187
Change-Id: Ia1c10ce5e7865c164b29bdcabb6ab8a7e4ae35b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5545577
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|