|
1810995c
|
2023-04-25T13:09:27
|
|
Capture/Replay: Initialize MEC alpha test state
Fixes Street Fighter IV CE rendering issues when capturing.
Test: angle_trace_tests --gtest_filter="*street_figher_iv_ce*"
Bug: b/278606770
Change-Id: Ifb44c45b19514e4cabed1e81be99bce5706ac4d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4475732
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
|
|
3625b749
|
2023-04-27T08:19:05
|
|
[ContextEGL] Synchronize state only when first making current
ContextEGL::onMakeCurrent() can be called when this context is already
current, which introduces complexities for the case where this context
is wrapping an external context. This CL ensures that in this case we
save state from the native context only when first transitioning this
context to be current.
To test: Exercise the repro steps in crbug.com/1434657: No assert
should go off.
Bug: chromium:1434657
Change-Id: I9690a76917fcb6d0fa31361bfbd3766bb6074d41
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4483695
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Colin Blundell <blundell@chromium.org>
|
|
1904410a
|
2023-04-26T19:37:04
|
|
Vulkan: Add missing ASSERTs to QueueSerial relation operators
Bug: b/255414841
Change-Id: I46203a6f51bd43818cc8c136b47ed4420e7dd184
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4481249
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
f4febc9c
|
2023-04-25T10:16:47
|
|
Vulkan: Remove generic syncval suppression about storage buffers
Bug: angleproject:7125
Change-Id: I3778e82c90f9d546f4e3948894060af0173b7b84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4471628
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
ec04c40d
|
2023-04-24T23:12:09
|
|
Vulkan: Fix regression not calling mRenderer->notifyDeviceLost
Change:
Vulkan: Fix freeing not completed Secondary Command Buffers.
https://chromium-review.googlesource.com/c/angle/angle/+/4334579
.. accidentally removed `mRenderer->notifyDeviceLost();` line from
`ContextVk::handleDeviceLost()` method. This CL fixes that regression.
Bug: angleproject:6100
Change-Id: Iba3c9df71399821ac1b05109e873abfe5dc02bad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4470307
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8b97c8d3
|
2023-03-31T15:54:40
|
|
Implement build option for load-time GlobalMutex allocation.
Performance difference on S906B for 1000'000 `eglGetError()` calls.
Before: 26.5 ms
After: 23.8 ms
(Assuming `angle::FastMutex2` is used).
Potentially can be enabled for other platforms.
Bug: angleproject:8101
Change-Id: Ic2037edaae6da82dbded71288bae250d7981e7d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4386408
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d37c97d1
|
2023-04-17T00:00:00
|
|
Metal: Implement OES_shader_multisample_interpolation
* Added support for sample qualifier
and shader interpolation functions
* Added MSL-specific AST transformations
* Adjusted minimum fragment interpolation offset state
query test so that accurate limits could be reported
* Drive-by: Y-flip gl_SamplePosition adjustment
* Renamed ANGLESampleMaskEnabled function constant to
ANGLEMultisampledRendering to correctly reflect its
usage
Bug: angleproject:8097
Bug: angleproject:8131
Change-Id: I25c9f36487e29f05bb9fe874e146d06378fef975
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4440827
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
b5fa8728
|
2023-04-20T14:59:28
|
|
Add extension to skip texture renderability validation in ANGLE.
Add a new extension to skip the texture renderability
validation in ANGLE.
Bug: angleproject:0000
Change-Id: Ia9e5a1eff233f5aced4706b7d3c183058d474c41
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455549
Auto-Submit: vikas soni <vikassoni@chromium.org>
Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: vikas soni <vikassoni@chromium.org>
|
|
e27759f9
|
2023-04-20T00:00:00
|
|
D3D11: Ignore sample mask and A2C for single-sampled rendering
Also fixed alpha-to-coverage for single-sampled
rendering and simplified sample coverage code
in the Vulkan backend.
Fixed: angleproject:8102
Change-Id: Ieea03dfdc13c6105ddf916dca6d0fea593eb3a62
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455508
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
13935469
|
2023-04-25T09:58:42
|
|
Vulkan: Fix access mask of generateMipmap's blit
Bug: angleproject:8143
Bug: angleproject:7125
Change-Id: I6e5b6cd1f445c2c41d4b78aeb368e30cc4c5354b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4475444
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
b494691d
|
2023-04-20T00:00:00
|
|
GL: Enable NV_shader_noperspective_interpolation on ES
Although the extension requires ESSL 3.00,
some drivers support it only in ESSL 3.10.
Fixed: angleproject:4542
Change-Id: I2c50b521056f485a5986942ea882780b327844a9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455507
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
5c9821fd
|
2023-04-21T00:00:00
|
|
GL: Fix readPixels for snorm color buffers
Bug: angleproject:8048
Change-Id: Ie4f6c5abb6d53c195f4bf460f179ae24fffd0102
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4464157
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
f1b8a29a
|
2023-04-21T14:37:23
|
|
D3D11: Fix instanced vertex streaming data copies.
Fix the other usage of ComputeVertexBindingElementCount in the D3D11
vertex streaming code. It is possible to try to copy too much source
data due to incorrect instanced count calculations.
Bug: chromium:1425606, chromium:1433180
Change-Id: Ie393b1c0b1291cf2b5087341c9fba8c98343d7bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4459152
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
1acc6d40
|
2023-04-21T17:03:49
|
|
Vulkan: Use Android TLS for *valid* global context
... instead of just global context. This means that the majority of
calls which call GetValidGlobalContext() will be faster (because they
don't need to check for context loss).
Bug: angleproject:8135
Change-Id: Ia91f8fadb5799088542c58d417f31c3e5028b3e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4454769
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
b22124bd
|
2023-01-17T17:44:06
|
|
Implement new "Global Mutex" functionality.
This CL improves performance compared to the existing code as well as
allows using non-std mutex implementations. Also acts as a base for
future changes.
CL adds new build option:
angle_enable_global_mutex_recursion = is_android && angle_enable_vulkan
"mutex_recursion" work same way as `std::recursive_mutex` before. It
will help in situations when Vulkan API may return back to the ANGLE.
For example: RenderDoc layer EGL deadlock.
Automatic loading of "libVkLayer_GLES_RenderDoc.so" layer causes
deadlock in EGL.
Recursion stack:
#01 pc 000000000029ea80 /vendor/lib64/egl/libGLESv2_angle.so (egl::GlobalMutexHelper::lock(int)+596)
#02 pc 000000000029c59c /vendor/lib64/egl/libGLESv2_angle.so (EGL_GetError+32)
#04 pc 0000000000062368 /system/lib64/libEGL.so (eglQueryString+20)
#05 pc 0000000000508fec /data/local/debug/vulkan/libVkLayer_GLES_RenderDoc.so
#20 pc 0000000000016690 /system/lib64/libvulkan.so (vulkan::api::EnumerateInstanceLayerProperties(unsigned int*, VkLayerProperties*)+40)
#21 pc 00000000005aa030 /vendor/lib64/egl/libGLESv2_angle.so (rx::RendererVk::initialize(rx::DisplayVk*, egl::Display*, char const*, char const*)+292)
#26 pc 000000000029c7e8 /vendor/lib64/egl/libGLESv2_angle.so (EGL_Initialize+192)
Additionally, recursive mutex will partially solve Android
SurfaceTexture deadlock (angleproject:4354).
Some performance numbers for 1000'000 `eglGetError()` calls.
Mutex Time (ms.)
Android S906B
egl::GetGlobalMutex()(std::recursive_mutex) 41.4
(Default) GlobalMutex (std::recursive_mutex) 39.1
(Recursive) GlobalMutex (std::mutex) 34.9
(Debug) GlobalMutex (std::mutex) 34.7
(Default) GlobalMutex (std::mutex) 34.4
Windows
egl::GetGlobalMutex()(std::recursive_mutex) 20.5
(Default) GlobalMutex (std::recursive_mutex) 20.0
(Recursive) GlobalMutex (std::mutex) 21.9
(Debug) GlobalMutex (std::mutex) 20.5
(Default) GlobalMutex (std::mutex) 19.9
Note: Recursive GlobalMutex enabled only for Android Vulkan by default.
Original fix:
https://chromium-review.googlesource.com/c/angle/angle/+/2029218
Bug: angleproject:8101
Bug: angleproject:4354
Test: angle_unittests --gtest_filter=GlobalMutexTest.*
Change-Id: I9e9d9b5c598ad1177ffa147ea690bd955946a712
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4401940
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d6d7e551
|
2023-04-24T14:42:06
|
|
[ContextEGL] Check for default FBO being null in onUnmakeCurrent
https://chromium-review.googlesource.com/c/angle/angle/+/4451908
added restoring of the default FBO ID when making external contexts
un-current. However, it turns out that onUnmakeCurrent() will be called
during destruction even if it was previously called without an
intervening makeCurrent() call [1], with the first call having un-set
the default FBO [2]. Hence, we need to check for whether the default
FBO exists in this flow to avoid crashes [3].
[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/angle/src/libANGLE/Context.cpp;l=766-787?q=Context.cpp&ss=chromium
[2] https://source.chromium.org/chromium/chromium/src/+/refs/heads/main:third_party/angle/src/libANGLE/Context.cpp;l=931;drc=a61b95c63b0b75c1cfe872d9c8cdf927c226046e;bpv=1;bpt=1
[3] https://crash.corp.google.com/browse?q=product_name%3D%22AndroidWebView%22+AND+EXISTS+%28SELECT+1+FROM+UNNEST%28expanded_custom_data.ChromeCrashProto.experiments.ids%29+expanded_custom_data_ChromeCrashProto_experiments_ids+WHERE+expanded_custom_data_ChromeCrashProto_experiments_ids%3D%2741e765a5-991da97%27%29+AND+product.Version%3D%27114.0.5730.0%27+AND+expanded_custom_data.ChromeCrashProto.magic_signature_1.name%3D%27rx%3A%3AContextEGL%3A%3AonUnMakeCurrent%27+AND+EXISTS+%28SELECT+1+FROM+UNNEST%28CrashedStackTrace.StackFrame%29+WHERE+FunctionName%3D%27rx%3A%3AContextEGL%3A%3AonUnMakeCurrent%28gl%3A%3AContext+const*%29%27%29+AND+EXISTS+%28SELECT+1+FROM+UNNEST%28CrashedStackTrace.StackFrame%29+WHERE+FunctionName%3D%27rx%3A%3AContextEGL%3A%3AonUnMakeCurrent%28gl%3A%3AContext+const*%29%27%29&stbtiq=&reportid=&index=0
Bug: chromium:1434315, chromium:1436354
Change-Id: I676dad65dc249e87ee0cae169ba93f605f776341
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4467147
Auto-Submit: Colin Blundell <blundell@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
b58ef53a
|
2023-04-14T14:27:12
|
|
Vulkan: Add size limit for VMA image suballocation
* Added kImageSizeThresholdForDedicatedMemoryAllocation, currently set
to 4MB. Any image larger than this will have its own dedicated device
memory handle via the following flag:
* VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
Bug: b/218891184
Change-Id: I00318188bf929cf6949d441e5048e9e9640fe5ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428536
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3ec55617
|
2023-04-20T08:36:24
|
|
[StateManagerGL] Add asserts to each mFunctions->get*() call
Will enable pinpointing where the assert that is going off in
crbug.com/1434317 is coming from. Can revert if desired once we have
needed info.
Note: All of these gets are called only from syncFromNativeContext()
or functions that are called by that function, so adding these asserts
shouldn't result in any new crashes beyond those that would already be
generated via the assert at the end of syncFromNativeContext().
Bug: chromium:1434317
Change-Id: I3dfa12f631bfbbb567d6043cc467d0ddfa8911e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4451907
Auto-Submit: Colin Blundell <blundell@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
cf91a5e6
|
2023-04-20T09:07:41
|
|
[ContextEGL] Restore default FBO ID in onUnmakeCurrent()
When making an external context current, ContextEGL sets the default FBO
ID to that bound by the external context. However, we don't currently
restore it to its previous value (expected to be 0) in
onUnmakeCurrent(). Aside from being generally problematic, this
specifically causes an assert to go off when later destroying this
framebuffer (see the linked bug).
This CL adds this restoration. This should be sufficient to resolve the
linked bug, as we don't expect ANGLE to process destruction of an
external context while it is current due to the GL spec [1].
[1] https://bugs.chromium.org/p/chromium/issues/detail?id=1434315#c6
Bug: chromium:1434315
Change-Id: I6da1880aea4c5245f1506ccc22f92370babd1917
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4451908
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Colin Blundell <blundell@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
613adfe5
|
2023-04-20T14:58:10
|
|
Enable CRC for pipeline cache
* Enabled CRC for the pipeline cache to see if the flakiness occurs
again.
Bug: b/246683126
Change-Id: Ia0de3f151823fb47be769bd1cf6a7e7ef9a8b578
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455551
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
db33a246
|
2023-04-21T13:17:07
|
|
Remove obsolete VUID suppression
Renamed in
https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/5645
Bug: angleproject:8119
Change-Id: I578ee8cf538112f974ac0a3a7b80d37947993f5b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4459181
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
|
|
2ce6d8df
|
2023-04-20T17:16:00
|
|
TextureVk calls onStateChange when releasing buffer views
TextureVk::setBuffer releases buffer views and they don't get
initialized unless a dirty bit is set. That works on the first draw call
because Texture::Texture() sets DIRTY_BIT_IMPLEMENTATION in constructor,
but when called twice mBufferViews remains unitialized causing
mBufferViews.getView() misbehavior.
Fix this by calling onStateChange when buffer views are released.
As mBufferViews is only initialized conditionally for texture buffers,
add a bool for tracking whether it is in the initialized state to avoid
marking texture as dirty unnecessarily.
Note that this isn't handled by signalDirtyStorage() inside
Texture::setBufferRange because (in this test case?) there are no
observers on Texture so onStateChange called from Texture is a no-op.
Texture however observes its TextureVk implementation so onStateChange
calls from TextureVk end up setting the dirty bit in
Texture::onSubjectStateChange.
Bug: b/278585075
Change-Id: I2b83160cdd89a086ed81e8412cd64d0aad930911
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4457147
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
8049d082
|
2023-04-20T16:13:34
|
|
Vulkan: Split ShareGroupVk class from DisplayVK into its own files
When ShareGroupVk class was introduced, it is a bit of convenience to
put it in the DisplayVk.h and DisplayVk.cpp files. Now we have added
more and more code into ShareGroupVk class and it deserves to have its
own files. This CL added two files ShareGroupVk.h and ShareGroupVk.cpp
and moved the class into the new files. No functional change is
expected.
Bug: None
Change-Id: I8683a3dc4192612d6ec8abbc7f00424958f09598
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4454639
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
285baade
|
2023-04-20T14:47:30
|
|
Move CRC check to before cache decompression
* Moved the CRC check to before the decompression is performed.
* Removed the asserts related to CRC, since if it is enabled,
an app is run, and then it is disabled, running the same app can
trigger the assert.
* Changed the FATAL() CRC logs to WARN() for now.
Bug: b/246683126
Change-Id: Ie4c33079b06766904649346d498234c6fc1a3415
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455550
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
60dd588e
|
2023-04-21T12:05:42
|
|
Revert "Temporarily restore obsolete VUID suppressions"
This reverts commit d0148f12bc1226a045b1b28e1a4be89e5012ef12.
Reason for revert: VVL rolled into Chromium crrev.com/c/4454789
Original change's description:
> Temporarily restore obsolete VUID suppressions
>
> To roll ANGLE into Chromium, which still has old VVL.
>
> Bug: angleproject:8119
> Change-Id: Ic0b53f8a965de5f11b5a143be2a9a05f57304547
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428872
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Bug: angleproject:8119
Change-Id: If0befdae7b69b8a4dba998f06cd022ee69d8734b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4454401
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
77d86c4a
|
2023-04-20T11:21:59
|
|
Vulkan: Set shading rate dynamic state unconditionally
Since this state is dynamic, it must be set before use.
Bug: angleproject:8108
Change-Id: I3ceeae95cdfad3388c35dd9e629e1424617f48b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455148
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
362c7023
|
2023-04-20T12:12:10
|
|
When asserts enabled, log validation errors as WARN
These messages are useful for debugging but INFO() doesn't get logged
at all (e.g. when using flags from linux-test CI)
Bug: None
Change-Id: I7fc02e866fc304c1e925becff58b71345d34238b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4456067
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
37ea6317
|
2023-04-19T13:40:56
|
|
Adds version switch to metal compiler
This way we generate a version that works on all OS versions
we support.
Bug: chromium:1423136
Change-Id: I5d22bdac420d9d2d31bb65883e4470c1785d5abc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4451026
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
|
|
4c6be8d4
|
2023-04-20T13:13:50
|
|
[Metal] Initialize all mtl::TranslatedShaderInfo members
hasInvariantOrAtan was never initialized.
Fixed: angleproject:8136
Change-Id: I770a6fa60da79fd301e3ab04f0f33605446a27f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4452766
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
ef20f191
|
2023-03-29T14:05:04
|
|
Make the PLS allow list more permissive
Allow ClipControlEXT, FlushMappedBufferRange, Gen*, PolygonOffset*,
ProvokingVertexANGLE, and KHR_debug commands.
Allow caps DEPTH_CLAMP_EXT, CLIP_DISTANCE[0..7]_EXT.
Ban indexed caps besides BLEND, SCISSOR_TEST, SCISSOR_TEST_EXCLUSIVE_NV.
Clarify that the index restrictions on indexed caps only apply to BLEND.
Bug: chromium:1421437
Change-Id: Ibdb0acaebfa992ad37c928481d5ecb10496f22e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4382502
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
7d813e4e
|
2023-04-19T12:34:56
|
|
Roll vulkan-deps from c8e5e8c4c60b to 9403c35f9956 (31 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/c8e5e8c4c60b..9403c35f9956
Suppress new VUIDs:
"VUID-vkCmdDraw-None-02859",
"VUID-vkCmdDrawIndexed-None-02859",
"VUID-vkCmdDrawIndexed-None-07835",
"VUID-vkCmdDrawIndexedIndirect-None-02859",
"VUID-vkCmdDrawIndirect-None-02859",
"VUID-VkGraphicsPipelineCreateInfo-Input-08733",
Changed dependencies:
* spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/f449fb4ad9..25ad5e19f1
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/8c8619df2d..f035e57c17
* vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/4e17c284d6..db7475424c
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/7b50c36e7a..50c2f9e71a
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,jonahr@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://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Bug: angleproject:8119
Change-Id: I8cb9bd3b593f24af130d9239c35fb119ed6bb41b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4446977
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
31a501ec
|
2023-04-19T16:37:37
|
|
Fix iOS build
Define PosixSpawnFileActions::Chdir() only on MacOS,
similarly to crrev.com/c/4300129.
Bug: chromium:1423136
Change-Id: I51055fb07166ecd6f8140afba421a3740fb5eafb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4448607
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
|
|
fa9172a3
|
2023-03-27T09:49:33
|
|
Reland "Vulkan: Use midRenderPass clear if RP has started but inactive"
This is a reland of commit 98151770adfd990c533991da27615b4879494307
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: I5c8c85c173f021a7753ef579f83d9ceb24147a7c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4442911
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
20b6624a
|
2023-04-17T13:55:09
|
|
Metal: Support compiling on iOS without EAGL
Makes EAGL and CGL compilation exclusive to each other. Catalyst would
compile with both on ARM64, but only use EAGL.
Remove use of GLSL generation in MSL. Generating GLSL for MSL
compute and geometry shaders do not make sense.
Remove compilation of RewriteRowMajorMatrices for Metal.
It was removed from Metal in:
b23bf47c9e999532a684beab9ac901552420b0b8
Reland "Metal: rewrite default uniforms and uniform blocks"
Remove use of ANGLE_ENABLE_APPLE_WORKAROUNDS and gn variable
angle_enable_apple_translator_workarounds. The workarounds are just
unconditional business-as-usual implementation of ANGLE when ANGLE is
compile for PLATFORM_APPLE.
Fixed: angleproject:8129
Change-Id: I3af249708803fba816e2a7c92c35dddb84ce6946
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428875
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Dan Glastonbury <djg@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
6deca89e
|
2023-03-22T22:33:40
|
|
Add Spirv Instruction to explicitly cast mediump float to 16 bit
If the GLSL shader code expects the comparison between
two mediump float values returning true, but the SpirV
compiler treats one of them as 32-bit, and treats the
other one as 16-bit, the comparison would return false
instead. The SpirV compiler may not automatically cast
the mediump float values to 16 bits, because it may
utilize the RelaxedPrecision decoration to keep a mediump
float as 32-bit, so that the compiler can avoid the
type cast from 32-bit highp to 16-bit mediump.
This change adds an additional OpQuantizeToF16 SpirV
instruction to explicitly cast mediump float scalar
or mediump float vector to 16 bit, if they are assigned
with a highp float value. This ensures that if the
GLSL shader code ever compares two meiump float values,
the SpirV shader compiler is not accidentally comparing
a 16 bit with a 32 bit float value.
This fixe the deqp test failure on Pixel 6 and Pixel 7:
dEQP-GLES2.functional.shaders.algorithm.rgb_to_hsl_vertex.
Bug: b/274859104
Bug: b/274408172
Change-Id: Ifd996cea14c0f77f45ae90f38c8e53cf5035139f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400404
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
9188aa0e
|
2023-04-18T10:05:29
|
|
Vulkan: Disallow reactivate of UtilsVk::blitResolve renderPass
We are still seeing
ClearTestES3.RepeatedStencilClearWithBlitInBetween/ES3_Vulkan flakiness
on win-test bot with intel GPU. The exact root cause is still unknown.
For now this CL will disallow reactivate of UtilsVk::blitResolve
renderPass by the subsequent user's draw calls.
Bug: b/273808966
Change-Id: Iebf37da3642d1fc3ee724b0743bfc0767ac48354
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4442446
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
65f4d2a4
|
2023-04-17T10:08:18
|
|
Adds features to enable loading/saving metallibs to blobcache
CompileMetalShaders results in the appropriate command line tool
being run to generate metallib blobs from shader source.
DisableProgramCaching results in not saving programs to BlobCache
LoadMetalShadersFromBlobCache results in trying to load metallibs
from BlobCache.
Bug: chromium:1423136
Change-Id: I01a4d7a5d60ed5ac978fb99db01b741e0f19e76b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4434293
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
|
|
443ac5b4
|
2023-04-17T00:00:00
|
|
GL: Enable OES_shader_multisample_interpolation
Drive-by:
* Fixed validity of the related state queries
* Added SampleMultisampleInterpolationTest
* Removed unused OES_sample_variables code
Bug: angleproject:8097
Bug: angleproject:8131
Change-Id: I816d2096759a96d8691acd0a8c5ecdedf880201b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4440826
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fdbd6488
|
2023-04-12T14:02:44
|
|
metal: allow unequal size attachments.
OpenGLES3.0 allows FBO with attachments that have unequal size.
In Metal, an FBO is represented by a render pass pipeline, which
is created using MTLRenderPassDescriptor descriptor. The render
pass can have color attachments as well as depth and stencil
attachments. Those individual attachments must have a texture
attached, which works as a buffer. However, the documentation
does not specify any dimension restrictions for those textures.
Test: verify the FramebufferTest_ES3.AttachmentsWithUnequalDimensions
passes.
Test2: made a simple metal app that renders using an offscreen
render pass pipeline to a texture that has size of 32x16 with
a depth buffer attached (size of 16x32) and verified the
pixels on that. The content outside the common area had
undefined pixel data.
Bug: angleproject:7994, angleproject:6447
Change-Id: I257f8e3aad497772cfc7de08314818ee5f434b84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4418266
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
4c8ab49d
|
2023-04-13T18:00:31
|
|
Use MESA variant of glFramebufferParameteri if possible
The GL_MESA_framebuffer_flip_y extension lets the client flip reads
and writes to the a fb via glFramebufferParameteri.
glFramebufferParameteri, however, is only available on GLES 3.1+, but
the flip y extension spec states that GLES 3.0 implementations can
still implement this extension by providing
glFramebufferParameteriMESA (see "Revision History" [1]).
Some old ChromeOS Flex devices only support GLES 3.0, but still
expose this extension. Currently, ANGLE segfaults when trying to
update the FLIP_Y param [2] (e.g. when we create a WebGL canvas) on
these devices because framebufferParameteri is only initialized on
GLES 3.1+ [3].
This CL fixes the crash by falling back to the MESA variant of
framebufferParameteri when framebufferParameteri is unavailable.
[1]:https://registry.khronos.org/OpenGL/extensions/MESA/MESA_framebuffer_flip_y.txt
[2]:https://source.chromium.org/chromium/chromium/src/+/main:third_party/angle/src/libANGLE/renderer/gl/FramebufferGL.cpp;l=1330;drc=bf5e9dbc89e2dddb9c36200396139e938467f58e
[3]:https://source.chromium.org/chromium/chromium/src/+/refs/heads/main:third_party/angle/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp;l=2552;drc=837cc12de25a288edf3ac222f7265c9936e69552
Bug: b/264681962
Change-Id: I079937bcd54b580b79d875f57c2b80ae796f2d83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4425929
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Brian Ho <hob@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
4e6cea96
|
2023-04-17T15:56:40
|
|
Removes UNREACHABLE in display initialization
As it's possible for metal to be unavailable, UNREACHABLE() should not
be used. Chrome has started shipping some builds with asserts enabled,
so that it's possible for the gpu to crash here. Removing the
UNREACHABLE makes it so the code doesn't crash and gpu fallback
happens.
Bug: chromium:1354718
Change-Id: I613c44b428c1de73b4b9937505e151d9416388ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4437615
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Scott Violet <sky@chromium.org>
|
|
7b33f4b9
|
2023-04-17T22:03:10
|
|
GL: Extend Qualcomm driver workarounds beyond Android
ChromeOS boards using Qualcomm 7c Gen1, 7c Gen2 and 7c+ Gen3 are
subject to these workarounds as well.
Bug: angleproject:8094
Change-Id: Id9f9155e203fe2d3563dcfb1798cd9f289565d01
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4438291
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kramer Ge <fangzhoug@chromium.org>
|
|
1e166daf
|
2023-04-10T23:49:46
|
|
Finalize PLS support for non-2D texture types
Commit to supporting GL_TEXTURE_2D_ARRAY and GL_TEXTURE_3D, and add
tests. Suppress D3D11 and Metal for now, since shader image support for
non-2D types needs some work on those backends.
Drop support for cube maps, since those will cause complications on an
implementation based on texelFetch.
Bug: chromium:1421437
Bug: angleproject:8124
Bug: angleproject:8125
Change-Id: I403ae157b7d2609f2190a98c2576c92f73441412
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4415150
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
2f19bb74
|
2023-03-16T16:03:29
|
|
Reland "Vulkan: Reactivate already started render pass when possible"
This is a reland of commit ad9537af7f2bb5e22bc73f4e833fd3789adaa217
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: Ice9062122ae320b1a0108ff981bc65bd13b2ada0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4406888
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
a7bd3f53
|
2023-03-31T16:57:35
|
|
Fix the retrace issue for VMA image suballocation
After adding the VMA image suballocation feature, VVL errors were seen
when using the retracing script for some traces, causing failure. After
analysis, it was seen that the functionality of the allocation differs
from the original method when it comes to non-zero memory allocation.
* In allocateAndBindMemory(), the memory property flags from the
allocated memory are returned to be used for non-zero memory feature
usage.
* Added mapMemoryAndInitWithNonZeroValue() to ImageMemorySuballocator,
which is used when allocateNonZeroMemory is enabled and the allocated
memory is host-visible.
* Merged the following into ImageHelper::initializeNonZeroMemory():
* mapMemoryAndInitWithNonZeroValue()
* InitMappableDeviceMemory(); used when VMA image suballocation is
disabled.
* Moved onMemoryAlloc() inside allocateAndBindMemory().
Test: retrace_restricted_traces.py
Bug: b/277618656
Bug: angleproject:8058
Change-Id: If411a073e900c1c034d40a99e3fffefe30c82548
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4391403
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
c9c40896
|
2023-04-10T11:53:01
|
|
Eliminate TexStorage Label Redundancy
Having the word "Texture" in the label of the TexStorage family of
classes is redundant since that information is already conveyed in
the "Tex" part of the class name.
Keep the "Swizzle" and "Level0" strings to disambiguate from the main
allocation.
Bug: chromium:1164111
Change-Id: I776b181c4e25ce189a3166bf49471fbf1f04d397
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4410414
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
|
|
d0148f12
|
2023-04-15T11:44:06
|
|
Temporarily restore obsolete VUID suppressions
To roll ANGLE into Chromium, which still has old VVL.
Bug: angleproject:8119
Change-Id: Ic0b53f8a965de5f11b5a143be2a9a05f57304547
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428872
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
|
|
7bc4b7e3
|
2023-03-27T00:00:00
|
|
Metal: Implement OES_sample_variables
New ESSL built-ins are mapped to their Metal
counterparts and tweaked to follow OpenGL ES
semantics when needed.
Fixed A2C interaction with sample coverage
by emulating the former on non-Apple GPUs.
Bug: angleproject:8097
Fixed: angleproject:5087
Change-Id: I5d28a941af5cbc14743a3930731529f11f55febd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4404896
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
82f1cee0
|
2023-04-13T15:28:17
|
|
Manual roll vulkan-deps from ec231c69caa6 to c8e5e8c4c60b (60 revisions)
Suppress new VUIDs:
VUID-VkGraphicsPipelineCreateInfo-Input-07905
UNASSIGNED-CoreValidation-Shader-InterfaceTypeMismatch
Unsuppress obsolete VUIDs:
UNASSIGNED-CoreValidation-Shader-InputNotProduced
UNASSIGNED-CoreValidation-Shader-InterfaceTypeMismatch
https://chromium.googlesource.com/vulkan-deps.git/+log/ec231c69caa6..c8e5e8c4c60b
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/77f7cdfb1e..68f073b195
* spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/3327924add..fc9bee27f4
* spirv-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git/+log/29ba249312..cfbe4feef2
* spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/ac335c7634..f449fb4ad9
* vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/63af1cf1ee..95a13d7b71
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/c3eb97de22..8c8619df2d
* vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/4ad4313da0..4e17c284d6
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/21078b582d..7b50c36e7a
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,ynovikov@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://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Bug: angleproject:8119, angleproject:4883, angleproject:6442
Change-Id: I8d4d0c16ccde26e3455580349bc18fe6a76c2874
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4423456
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
0be451a1
|
2023-04-11T12:10:25
|
|
[ios] fix sublayer resize
It's only macOS that supports autoresizing mask on
CALayers. In case of iOS, a sublayer has to be resized
manually.
Fixes FramebufferTest_ES3.SurfaceDimensionsChangeAnd\
FragCoord/ES3_Metal test.
Bug: angleproject:7994
Change-Id: Ie4f08480a581e7b1b8cfb7e9b47ec3afadc0484f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4403974
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
28edde6f
|
2023-04-13T20:20:33
|
|
Vulkan: enable enableCompressingPipelineCacheInThreadPool for venus
Try again with aosp/2451163.
Bug: b/246683126
Change-Id: Idb66cfbace29349ddf5ed6a96146433098384689
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4426749
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6732791c
|
2023-04-05T10:16:13
|
|
Vulkan: Include image layout in DS cache key
The image layout for a texture can change from GENERAL to
SHADER_READ_ONLY_OPTIMAL when switching from rendering with a feedback
loop to not. The descriptor set cache needs to take image layout into
account otherwise it can return a false hit in this case, resulting in
the re-use of a descriptor set with the wrong image layout and
validation error VUID-VkDescriptorImageInfo-imageLayout-00344.
This change also includes a regression test to reproduce the behavior of
the application where it was observed.
Test: angle_end2end_tests --gtest_filter="*FeedbackLoopTextureBindings*"
Test: Run com.gameloft.android.ANMP.GloftGGHM on Pixel 6
Bug: b/268091452
Change-Id: I80b4e2373963247a83f8ec17028445f54c820e86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400824
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
c26011b8
|
2023-04-11T15:16:29
|
|
Vulkan: Make advanced blend alpha div workaround permanent
This workaround turned out to affect pretty much every driver, and
numerous GL implementations were found to work around it similarly to
ANGLE. It seems like this workaround may only be necessary for
colorburn and colordodge, but for now ANGLE applies it to all modes.
Bug: b/274528004
Bug: b/277777623
Change-Id: Id555c981a9775f949a3022b7e92c755accea7cea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4416158
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
663b60b5
|
2023-04-12T09:51:32
|
|
Vulkan: More consistent fix for single buffer ANI semaphore wait
Transition into single buffer mode are generating two ANI calls. This CL
slightly improves the previous CL (crrev.com/c/4400011)'s handling of
ANI semaphore wait for single buffer mode. Instead of catching
outstanding ANI semaphore at present time, this CL consumes the
semaphore immediately just like layout change
Bug: b/275624771
Change-Id: I5418ec47b6bfc77af411c9205e1ae27adeb27976
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4419126
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
9ae918cb
|
2023-02-03T15:14:00
|
|
Reland "Vulkan: SurfaceVk should only wait for GPU work that uses it"
This is a reland of commit 5b63e1dc1d5e96018d0ad30582265a612d309f3b
The added fix is add contextVk::mLastSubmitQueueSerial into
Surface::mUse before calling finish.
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
Change-Id: I160fd22595fcf292cc53c055e0678befa3b8501b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4406891
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fd0ced8b
|
2023-03-31T15:07:00
|
|
Vulkan: remove isVenus from ARM driver version check
There're other ARM workarounds no longer needed by Venus atop ARM mali
ddk r40p0 and above, so we choose to forward host ARM driver version in
Venus: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22242
Bug: b/277833839
Test: workaround enabled with latest venus
Change-Id: Ic52d4fe9f3f7e8a6f87aa275e702c99668f5824f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4391232
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3d17e9aa
|
2023-04-06T12:54:24
|
|
Add PLATFORM_IOS again
ANGLE_PLATFORM_IOS means "iOS or MacCatalyst".
Bug: angleproject:8121
Change-Id: I1482f44a106a1363623e2608b126ccde5548b81e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4404162
Reviewed-by: Dan Glastonbury <djg@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
f507fe05
|
2023-04-06T12:27:00
|
|
Rename PLATFORM_IOS to PLATFORM_IOS_FAMILY
The current define ANGLE_PLATFORM_IOS actually means
"iOS or tvOS or WatchOS or MacCatalyst".
The current define ANGLE_PLATFORM_WATCHOS means nothing.
The current define ANGLE_PLATFORM_APPLETV means nothing.
Replace PLATFORM_IOS and its uses with PLATFORM_IOS_FAMILY, so that
then PLATFORM_IOS can be reintroduced and others can be fixed.
Replace PLATFORM_IOS_SIMULATOR and its uses with
PLATFORM_IOS_FAMILY_SIMULATOR for consistency.
Use consistent `#if X` notation instead of `#if defined(X)`.
Bug: angleproject:8121
Change-Id: Ibe668c2ae9bb801d15e036fcf1dfd53f22c30787
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4404161
Reviewed-by: Dan Glastonbury <djg@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
c19b66f6
|
2023-04-06T11:30:03
|
|
EAGL: Define ANGLE_ENABLE_EAGL in build system
ANGLE_ENABLE_EAGL is a "build system" decision.
Set this and new variable ANGLE_ENABLE_CGL in BUILD.gn file. This is
consistent with the other backends.
Remove ANGLE_CPU_ARM64. This was used to do ANGLE_ENABLE_EAGL=TRUE
when on Catalyst. Instead, let the build system set this.
For ANGLE/Chrome buildsystem, this is not set, as Catalyst is not
implemented. For WebKit, this should be set at WebKit build settings.
Replace
`defined(ANGLE_PLATFORM_MACCATALYST) && defined(ANGLE_CPU_ARM64)`
with simpler expression: `defined(ANGLE_ENABLE_EAGL)`.
Replace `defined(ANGLE_PLATFORM_MACOS) || defined(ANGLE_PLATFORM_IOS)`
with simpler expression: `defined(ANGLE_PLATFORM_APPLE)`.
Bug: angleproject:8121
Change-Id: I3a0bbabb4347ad11f693e3f7c336ff12f66203d7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4404160
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Dan Glastonbury <djg@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
459f0fad
|
2023-04-06T13:42:49
|
|
Vulkan: Force submit when switch to system framebuffer draw
Given recent finding on unnecessary wait for acquire image semaphore,
since the semaphore wait is per submission, any GPU will have this same
performance problem if we only do command submit per frame. This CL
forces submission when we switch draw framebuffer to system default
framebuffer, so that the semaphore wait will not block user's fbo
rendering.
Bug: b/275624771
Change-Id: Id6b941870ef296393c13d0daaf81a41b6c042b9a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4406882
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
d58fbf04
|
2023-04-05T12:32:09
|
|
Vulkan: Wait for surface ANI semaphore only if image is used
Right now there is a bug that surface's ANI semaphore is added to
context when WindowSurfaceVk::getAttachmentRenderTarget get called,
which gets called from FramebufferVk::syncState, which is before we end
the previous render pass, due to the endRenderpass usually is deferred
until next renderPass starts. This caused ANI semaphore gets added to
the previous render pass's submission, which does not use surface, and
thus a bubble in GPU execution pipeline where the user FBO rendering
gets unnecessarily blocked until ANI semaphore is signaled. This lowers
GPU utilization and thus GPU frequency gets dropped and frame time
increased. This CL stores ANI semaphore to ImageHelper object and when
barrier is generated, the ANI semaphore is moved to CommandBuffer. When
CommandBuffer gets flushed and submitted, it gets added to the
waitSemaphores vector and submitted to vulkan. Since all use of swap
chain image must go through barrier code first (you need at least change
layout), this ensures ANI semaphore gets waited in exact and robust way.
Only the submission that references the swap chain image will be waited.
With this CL, professional_baseball_spirits reduces frame time from 3.8
ms to 2.7 ms, achieving parity with native GLES on pixel 7 pro.
Bug: b/275624771
Change-Id: Ifa6cacf9e3bc147bfde54eb7def2fca48c50aca0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400011
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3dd79798
|
2023-04-07T12:57:05
|
|
GLES1: Convert ints to uints for mediump values
Mobile drivers are limiting mediump values to 16 bits, which follows
the GLSL spec.
Our shader was using signed mediump ints for enum values. That limits
their value range to [-2^15, 2^15-1], which is [-32768, 32767].
We started failing tests that use TexEnv mode GL_COMBINE (0x8570)
which converts to 34160 in decimal, exceeding the range.
This translated to a failure to switch on envMode in textureFunction.
To fix, convert all the mediump ints in the shader to mediump uints.
Test: GLES1ConformanceTest.TexCombine/ES1_Vulkan
Test: angle_trace_tests --gtest_filter="*wayward_souls*"
Bug: b/277220840
Change-Id: I5219fe1e725c80929906aee3eebd0729a2a29a9b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4409684
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
65ed3050
|
2023-04-04T11:57:38
|
|
Vulkan: Let recordWriteBarrier use CommandBufferHelper
This is preparation for next CL. It changes
OutsideRenderPassCommandBuffer argument to
OutsideRenderPassCommandBufferHelper for recordWriteBarrier() and
recordReadBarrier() calls, so that it has access to the helper object
(will be used in next CL). It passes CommandsState to executeBarriers()
instead of PrimaryCommandBuffer. No actual functionality change is
expected.
Bug: b/275624771
Change-Id: Ia06a0398a127539b0b642005803a498cb2a9d7f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400407
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
20f875f8
|
2023-04-05T09:47:46
|
|
Vulkan: Add commandQueueWaitSemaphoresTotal perf counter
This counts total number of wait semaphores we submitted. This will be
used to write test to ensure that we insert wait semaphores properly in
future CLs.
Bug: b/275624771
Change-Id: I5b8e209500ff553617f6b30c2f8b4626d29c0e6a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400823
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
a4341e04
|
2023-04-06T11:05:07
|
|
CGL: Remove the impl preprocessor guards
Adhere to the project formatting:
- Remove #if preprocessor guards from the CGL 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.
Moves macOS specific APIs from SystemInfo.h to SystemInfo_internal.h,
since common/platform.h is not available for Chrome clients of
SystemInfo.h
Bug: angleproject:8121
Change-Id: Iaef0d6948fbcef6d1c2e7877477d25ccc259cc2c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4404159
Reviewed-by: Dan Glastonbury <djg@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
854264e3
|
2023-04-11T06:18:44
|
|
Vulkan: enable precisionSafeDivision for venus
..otherwise the legacy org.skia.skqp.SkQPRunner#gles_xfermodes2 SkQP cts
will fail across our host Vulkan implementations: mali, anv, radv, tu.
Btw, radv has been lucky due to the existing isAMD condition satisfied.
Bug: b/274528004
Change-Id: I39debe4e58d8afff0671809ac19cf9be8637f73e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4413212
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
e975f9dc
|
2022-11-09T06:44:06
|
|
Capture/Replay: handle paletted textures
Add a method for recompressing paletted textures on
capture.
Bug: angleproject:7710
Change-Id: I11af0c1cd7c3b63850c5daf96eafcd3efce65f16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4178311
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@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>
|
|
bb15ceef
|
2023-03-27T11:32:30
|
|
Remove syncing of extended dirty bits for TexImage calls.
All extended dirty bits were synced for glTexImage calls but many of
them required valid GL state or a complete framebuffer. This caused
errors in the Vulkan backend when we would read and write out of
bounds of the framebuffer due to an incorrect render area.
Bug: chromium:1410191
Change-Id: I17f156f71ded72761b631ef9842b048a9173c9b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374102
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>
|
|
8b81a3d2
|
2023-03-27T10:03:34
|
|
GLES1: Use ASCII minus in comment
Bug: angleproject:7933
Change-Id: I05fb4512594447ff02078f1845c1ceb74c1b27ce
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374097
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|