|
073b6510
|
2024-01-11T07:40:32
|
|
Add missing GLES1 glGetBooleanv() enums
In OpenGL ES 1, capabilities that can be queried using glIsEnabled() can
also be queried using glGetBooleanv().
As such, some valid glGetBooleanv() calls were returning "Invalid pname"
error.
Added support for the missing enums in glGetBooleanv().
Bug: angleproject:8481
Tests: GLES1 - QueryTest*
Change-Id: Ic3a50eda4eae5855cd9491dbf217b5f69c1669b4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5188456
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
80e4bcd6
|
2024-01-05T13:58:13
|
|
Fix crash in eglQueryDeviceStringEXT for EGL backend
Underlying eglQueryDeviceStringEXT can return NULL if there is no DRM
node associated with EGL device.
https://registry.khronos.org/EGL/extensions/EXT/EGL_EXT_device_drm_render_node.txt
Bug: angleproject:7686
Change-Id: Iec6acc43ac8c9d277df064161e718155d5c03c95
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5170889
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Vasiliy Telezhnikov <vasilyt@chromium.org>
|
|
2e2d7247
|
2024-01-11T11:50:44
|
|
Roll vulkan-deps from eb5fcf15ff7f to 124ff11a5e15 (21 revisions)
Skip VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658 added in:
https://github.com/KhronosGroup/Vulkan-ValidationLayers/commit/939e7c3fcbb75f71f0dfa999064c74f27a014189
https://chromium.googlesource.com/vulkan-deps.git/+log/eb5fcf15ff7f..124ff11a5e15
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/db4d6f85af..1952e63d43
* spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/cffc08a542..37a58e4c95
* spirv-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git/+log/1bfd27101e..bdd1b2ab1f
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/e2b7bb1207..4c20ea3156
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/02f1cb7d55..6f441477e7
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,cnorthrop@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:8482
Tbr: cnorthrop@google.com
Change-Id: Iaa696787ae66ba44db591c18833d2b7261474c08
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5185141
Reviewed-by: Solti Ho <solti@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
e00995d4
|
2023-12-21T15:57:39
|
|
Vulkan: Invalidate pipeline with FBO draw buffer change
Enabling/disabling draw buffers can affect the graphics pipeline without
changing the render pass description. In that case, the graphics
pipeline was not being invalidated.
Bug: angleproject:8463
Change-Id: I6848472dcbb3d3ce4c34d95be28c8ec3fc50dcd7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5147847
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
|
|
4b356c39
|
2023-08-17T10:49:19
|
|
Vulkan: Drop support for VMA 2.0
Since ANGLE and Chromium were last updated to use VMA 3.0, there have
been no breaking issues so far.
* ANGLE update: https://crrev.com/c/4777337
* Chromium update: https://crrev.com/c/4911597
Therefore, the support for the old VMA (2.3) can now be removed.
* Removed ANGLE_VMA_VERSION from the build files, since they are
no longer required.
* Removed the VMA-related guards in the code as well.
* Removed the flags and thresholds for the buddy algorithm, which were
used in VMA 2.3.
* Share group buffer pools is no longer a map.
Bug: b/303290680
Change-Id: Ic2b29e8f95ca5c941b297b20442c5bad4b8f52e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791667
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f7296e95
|
2023-12-29T10:01:26
|
|
Roll vulkan-deps from 1fd0038f3bbb to 7f90849f10d0 (6 revisions)
Skip VUID-VkImportMemoryFdInfoKHR-handleType-00667 added in
https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/7199/commits/cebf29d9587aad38acf52351d4b6225e7c1d032f
https://chromium.googlesource.com/vulkan-deps.git/+log/1fd0038f3bbb..7f90849f10d0
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/89824a83b7..88c5373ee4
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/741a9dfd8f..a3b11f1fcc
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/e3d690bb54..98dea76972
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,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: angleproject:8470
Change-Id: Iba9e9dae398a753fd9675e5b68551abe2dfc0c46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5155494
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Solti Ho <solti@google.com>
|
|
295eece6
|
2023-12-26T17:28:04
|
|
Vulkan: Add feature to force enable sample usage
Add a feature that would force enable the
VK_IMAGE_USAGE_SAMPLED_BIT usage flag for an image with
external format, irrespective of the requested AHB usage.
Bug: b/155487768
Change-Id: Ie46012d6f905317cd42a69768b4d35b44db474c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5153131
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
82c0ba93
|
2023-12-21T16:18:40
|
|
Set dirty bit when GLES1 texture state changes
During experiments, it was seen that some devices fail to use the
tex coord pointer properly after GL_TEXTURE_2D is re-enabled and there
is a draw without updating any additional attribute pointers.
* The GLES1 renderer will now also set the dirty bit for the vertex
array when GL_TEXTURE_2D state changes.
* (via setEnableVertexAttribArray())
* Updated the following test:
DrawWithTexCoordPtrThenDisableTexture2DAndDrawAnother
* Updated so after GL_TEXTURE_2D is enabled, we draw without updating
the vertex pointer to check that simply enabling textures is enough
to use the texture data.
Bug: b/310688730
Change-Id: I0d93bd6fae3d07ea86cf0e5e094ce7a29f2e5f1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5147197
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
343e774a
|
2023-12-26T16:44:47
|
|
Vulkan: Bugfix in usage flags of images with external formats
Enable VK_IMAGE_USAGE_SAMPLED_BIT usage flag for an image
with external format only if the equivalent AHB usage was
requested.
Force enabling VK_IMAGE_USAGE_SAMPLED_BIT usage will mask
bugs where an app or vendor gralloc module fails to
include the AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE or the
equivalent gralloc usage flag when creating the AHB
Bug: b/155487768
Change-Id: If09cd739a6fdc3ac7905f9d4c1fc9d4098e0cdad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5153125
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
a6b9a744
|
2023-12-21T00:00:00
|
|
Metal: Implement vertex attribute aliasing
When vertex attribute aliasing is supported, the
external vertex input struct is filled post-link
to account for potentially aliased attributes.
Fixed the following tests:
dEQP-GLES2.functional.attribute_location.bind_aliasing
.cond_float
.cond_vec2
.cond_vec3
.cond_vec4
.cond_mat2
.cond_mat2_offset_1
.cond_mat3
.cond_mat3_offset_1
.cond_mat4
.cond_mat4_offset_1
dEQP-GLES3.functional.attribute_location.bind_aliasing
.cond_float
.cond_vec2
.cond_vec3
.cond_vec4
.cond_mat2
.cond_mat2_offset_1
.cond_mat3
.cond_mat3_offset_1
.cond_mat4
.cond_mat4_offset_1
.max_cond_float
.max_cond_vec2
.max_cond_vec3
.max_cond_vec4
.max_cond_mat2
.max_cond_mat3
.max_cond_mat4
Fixed: angleproject:6297
Change-Id: Ifa6b82e0d7d4e12115ec19e342cfb82ab4389f5a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5148210
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
706b5abe
|
2023-12-21T00:00:00
|
|
Avoid UB in 16-bit IOSurface tests
* Removed incorrect R16UI mappings from backends
* Fixed the enum used in RenderToR16IOSurface
* Added more 16-bit tests
Fixed: angleproject:7445
Change-Id: I7d5fb8b6a5fc7a57de8f988fdcc21e66606f875d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5148211
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
d18f22ca
|
2023-12-14T11:50:19
|
|
ANGLE: Update syncval exceptions and add test for syncval errors
Trace testing found some new cases where the current sync val
error messages needed to be widened to cover more cases. A test
was added to reproduce the behavior seen in the Asphalt 9
ANGLE trace.
Test: FramebufferTest.InvalidateAttachmentStencilOnly
Bug: b/316337308
Change-Id: Icde7ad560e6949712bfd785d9969b9e179d11492
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5124314
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
|
|
a1143857
|
2023-12-18T15:24:42
|
|
Fix UBO dirty bits vs PPOs
This change fixes propagation of UBO dirty bits (such as through
glUniformBlockBinding and glBindBufferRange) to program pipeline
objects. Since PPOs concatenate the attached programs' UBOs in a list,
a map of program UBO indices to PPO UBO indices is introduced to
offset these dirty bits appropriately. Additionally, when the program's
executable's buffer bindings change (through glUniformBlockBinding), a
notification is send to the PPO to update its executable's buffer
binding accordingly (which is otherwise only updated during PPO link).
Bug: angleproject:8462
Change-Id: I4965ae23e6fc6cac0842e1643755e42e95d3d5cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5131418
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
e15a7de3
|
2023-12-21T10:01:41
|
|
Roll vulkan-deps from 9c3a33aed0ec to 34a8babeb440 (5 revisions)
https://chromium.googlesource.com/vulkan-deps.git/+log/9c3a33aed0ec..34a8babeb440
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/c155f881ee..abb79089a8
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/40633a61aa..3798f68b73
* vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/b42addf414..e21dc3deb0
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/ea496a3de8..8095b050f9
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,geofflang@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:8468
Change-Id: Icf23d4056b1f9a6caae2483125841bc6aefe3a8f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5144390
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
13685465
|
2023-12-20T15:39:24
|
|
Vulkan: Don't request surface extensions without VK_KHR_surface
... on headless platforms.
Bug: angleproject:8467
Change-Id: Id0032ddd9f57540719d90f58b7d99cfb79f91a8c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5142626
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
c51259ec
|
2023-12-14T15:58:56
|
|
Vulkan: Ignore tex coord at draw if tex disabled
In GLES1, it is possible to disable texture rendering in some cases.
It is done using glDisable(GL_TEXTURE_2D).
In that case, if TexCoordPointer has been enabled in the client state
prior to disabling the texture, its data should no longer be used,
especially if the primitive changes to use more vertices. In that case,
there is a risk of unauthorized memory access.
In this CL, the active vertex attributes are updated accordingly if
texture is disabled using the aforementioned API call.
* Updated GLES1 renderer to ignore TexCoordPointer if texture has been
disabled.
* Added GLES1 tests for tex coord pointer, including tests to make sure
that tex coord pointer is no longer used if the texture is disabled
using glDisable(), and that it is used again when texture is enabled
using glEnable().
* To ensure that tex coord pointer is not used, the test draws using
enough vertex data that would exceed the texcoord array size, which
can trigger segfault if accessed.
Bug: b/310688730
Change-Id: I5d259c83a172cc1a11733c0b42c2f9b02c9b2967
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5124259
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
0aaa8de9
|
2023-12-19T23:23:40
|
|
Vulkan: Fix memory tracking vs external texture acquire
... with a layout of GL_NONE.
Bug: angleproject:8464
Change-Id: I94690c5693c5bcb6d510e4a27097206f0da58a41
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5138656
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e9c0241d
|
2023-12-19T10:23:13
|
|
Vulkan: Rely on Vulkan 1.1 entry points in tests
Some KHR entry points that were promoted to Vulkan 1.1 no longer seem to
be loadable with their KHR symbols.
Bug: angleproject:8464
Change-Id: Id5417e5b047e6bd34d144fead518f771c17658e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5135676
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6951508b
|
2023-12-19T19:30:05
|
|
Manual roll vulkan-deps from de368ee1bf18 to 06ba2decfb32 (1 revision)
Manual roll requested by ynovikov@google.com
Suppress SYNC-HAZARD validation errors in vkQueueSubmit(), enabled by
https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/7129
https://chromium.googlesource.com/vulkan-deps.git/+log/de368ee1bf18..06ba2decfb32
Changed dependencies:
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/eebe1dfcef..0c6e58c7f0
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,geofflang@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://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: b/316013423
Change-Id: Id63a3ddd4615f8a520b68588db4520d30a687598
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5137081
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
5a062a39
|
2023-12-14T21:15:59
|
|
Do not update the vertex attribute limit on divisor change
The effect of the divisor on the vertex attribute limit is accounted for
in StateCache::updateVertexElementLimitsImpl since
https://chromium-review.googlesource.com/c/angle/angle/+/5101508, and so
the vertex attribute's mCachedElementLimit is now independent of the
divisor.
Bug: angleproject:8448
Change-Id: I3f76986d6b8d3ba6b0ebd955f9a26854ee8c20e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5122996
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9f148c41
|
2023-12-14T00:00:00
|
|
Metal: Fix triangle fan indices generation
* Ensured that the second index is preserved when
skipping leading primitive restart values
* Restricted the search loop to the index count
* Ensured that draw calls are skipped when the
generated index buffer is empty to avoid Metal
validation errors, also for line loops
Fixed: angleproject:6458
Change-Id: I3194eb9db3e7e225448901edce167a2091563cd5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5132092
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
80db7c4b
|
2023-10-17T10:03:06
|
|
Vulkan: Remove fixed VU suppressions
Bug: angleproject:5309
Bug: b/175584609
Change-Id: I8f952a1feb235b6bd060b5fe0b89c01fde6f84be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4946592
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bd5dce9a
|
2023-11-21T15:39:04
|
|
Metal: Use MTLEvent instead of MTLSharedEvent when possible
Refactor mtl::Sync to be abstract and have multiple implementations
using either MTLEvent or MTLSharedEvent. Use MTLEvent in all cases
except for EGL Syncs when the user sets the sync type to
EGL_SYNC_METAL_SHARED_EVENT_ANGLE.
Determine completion of the sync object by watching for completion of
the command buffer where the event's signaling was enqueued. Avoid any
sleep loops by waiting on a condition_variable which is notified
when the completed queue serial is updated.
Forked from CLs by sky@ and kbr@
Bug: angleproject:8153
Change-Id: I4547444b596366496c811cb9954872b85ab14ad8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5133706
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
4bf40237
|
2023-12-18T15:24:15
|
|
GL: Fix missing glUniformBlockBinding handling
When a program is current and this call is made, the program is made
dirty so that the GL backend reacts to this call. Prior to
https://chromium-review.googlesource.com/c/angle/angle/+/4922969, the
program was made dirty when its executable was installed as well (if it
had any UBOs dirty), but that change removed it. As a result, if this
call was made while the program was _not_ current, the GL backend would
miss processing it.
This call ensures that the appropriate dirty bit is set when the program
is made current again. This revealed a bug in the Vulkan backend where
sometimes the executable's dirty bits would not get reset. This was
benign but fired an assertion, and is fixed in this CL as well.
Bug: chromium:1511506
Change-Id: Iae86ba0aa5b8f9e4f20dd6df6002d37e405280e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5123005
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
1e4c4c76
|
2023-12-18T19:35:13
|
|
Vulkan: avoid disabling explicitlyCastMediumpFloatTo16Bit for venus
We disabled it to work around below legacy skia cts:
CtsSkQPTestCases org.skia.skqp.SkQPRunner#gles_gradient_many_stops
The test no longer exists in newer skia cts. Meanwhile, we have to drop
the workaround for other precision issue on Mali-G52.
Bug: b/316474995
Test: dEQP-GLES2.functional.shaders.algorithm.rgb_to_hsl_vertex
Change-Id: I18394595632d05657e96f8b9c9675b4dd959d92b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5133372
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
|
|
40f4de8f
|
2023-12-15T10:17:32
|
|
Vulkan: Ensure we use cached memory for readPixels stagingBuffer
Previous CL crrev.com/c/5112759 does not solve the performance issue for
ChromeOS. The reason is that on more recent intel GPU, there is no
hostVisibleCachedCoherent heap. When we allocate staging buffer, we
specify CachedCoherent as the preferredFlags instead of requiredFlags.
This means we still end up getting UncachedCoherent since VMA tries to
respect coherent bits as first priority. This CL Changes CachedCoherent
to CachedPreferCoherent, and made Cached as required bit, thus ensures
the memory allocated is cached. Since coherent bit may not be honored,
thus we have to call invalidate/flush (which underline implementation
will check the bit and early out if no need).
Somehow on ARM GPU using cachedNonCoherent staging buffer causing many
test failures, even though we do call invalidate() after allocation, and
tests pass on all other GPUs. It almost indicates ARM driver have a bug
with invalidate() that it is not doing expected. But before I can be
sure and fixed, I added feature bit to keep ARM the old behavior, which
uses UnCached memory for readPixels which should suffer the performance
as well.
Bug: b/315836169
Bug: b/310701311
Change-Id: I1eec6105ce74275faa893b0206be8470f0cde72f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5122318
Commit-Queue: Charlie Lao <cclao@google.com>
Auto-Submit: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a950f005
|
2023-12-06T18:58:35
|
|
Move compressed format validation to Vk backend.
Add test to call glCompressedTexSubImage3D() from a pixel unpack buffer.
This currently fails on OpenGL.
Bug: angleproject:8449
Change-Id: I863b602e39a14878af8745ff62b408bdd879bc98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5100348
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
|
|
80893f26
|
2023-11-30T16:57:15
|
|
OpenCL: Remove unneeded impl getters
Some of the OpenCL backend (impl) getters are not needed.
These are the size query for image creation,
and CL source retrieval for program objects
not created from source.
Bug: angleproject:8438
Change-Id: I76b39b75f1ae76ec0c3c94d5715632cb9dd4900a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5078243
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
66d29149
|
2023-10-16T12:43:43
|
|
OpenCL: Add scaffolding to renderer/vulkan code
Start off ANCLE (OpenCL on ANGLE) with backend scaffolding code with
placeholder API error returns until they are later implemented.
Bug: angleproject:8377
Change-Id: I223d3482cce097ccb298e121fc03ec416e8958fd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4950556
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
18a68f6d
|
2023-12-07T16:23:10
|
|
Fix vertex attribute limit check
Bug: angleproject:8448
Change-Id: Ie5d2b71f0be86b31ec74a1d55501b60a25245668
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5101508
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
5e619b21
|
2023-11-29T14:56:59
|
|
OpenCL: DoubleFpConfig query validation fix
There is currently a minor bug in the CL validation code that
unconditionally validates "cl_khr_fp64" extension string when
client queries for fp64 support.
This is correct behavior for OpenCL 1.1 and lower. However for
OpenCL 1.2 and greater, this became a core query for clGetDeviceInfo
via "CL_DEVICE_DOUBLE_FP_CONFIG".
Thus, on some 1.2 and greater implementations (ANGLE CL passthrough),
this extension string wouldn't be specified since its a core API query
in that case - and validation check will incorrectly fail via:
ANGLE_VALIDATE_EXTENSION(info.khrFP64)
Fix is to conditionally check this for the appropriate CL versions.
Bug: angleproject:8436
Change-Id: Id2bb5699fa523061d738af19edb465a78dbd880d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5075775
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3439e421
|
2023-12-15T11:37:53
|
|
Vulkan: Remove AHB workaround for camera app
This is now fixed in camera app main branch. The workaround is removed
here.
Bug: b/239181279
Change-Id: I782baf7a42a8c9a897f1947d8b2f6feba606ce29
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5126931
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ed7c31c7
|
2023-11-29T18:31:43
|
|
OpenCL: Replace error-passing APIs to use angle::Result
Part 2 of Issue 8435:
This part replaces existing error handling for all CL APIs that
return CL objects to now use "angle::Result".
Bug: angleproject:8435
Change-Id: I75e41c7cbb06220cabec7cc9f9cb5107a3b6bd6d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5075773
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a9512a9f
|
2023-11-29T14:56:29
|
|
OpenCL: Replace error-return APIs to use angle::Result
The motivation of converting existing CL APIs using
"cl_int errorCode" to now use "angle::Result" is for better
interop with internal ANGLE plumbing/abstractions.
To facilitate this, we now make use of a TLS errorCode
object that we set internally and read from entrypoint/stubs
layer so that we can propagate back to user.
Bug: angleproject:8435
Change-Id: I7c2a786019c33c56649be4b6e8b61bc318497bb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5075772
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8f966559
|
2023-12-07T00:00:00
|
|
Metal: Fix matrix vertex attributes with mixed sources
Updated VertexArrayMtl::setupDraw to support matrix
vertex attributes that use current and array values
simultaneously.
Simplified the helper function.
Fixed: angleproject:8456
Change-Id: I09a26a978cda4b9ac3747325ad571d5ad2fff72d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5116500
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
|
|
524bcb8e
|
2023-12-13T20:21:38
|
|
Vulkan: avoid forcing preferSubmitAtFBOBoundary with Venus
It turns out benefiting Venus atop ARM while hurting in a non-trivial
way on old Gen Intel due to execbuf overhead.
Bug: b/314847707
Test: 2%+ gain for trex on ANV on CML
Change-Id: I61eb18a05e94c97ee6a4d70f98ae30423155e632
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5118128
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c8604e97
|
2023-12-13T19:48:16
|
|
suppress VUID-VkVertexInputBindingDivisorDescriptionKHR-divisor-01870
Unblock the autoroller first
Bug: angleproject:8454, b/316176944
Change-Id: I7f692a81e7a8b0189f83ce6f00e0cec6e2d7e2b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5118126
Commit-Queue: Solti Ho <solti@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
df4d9667
|
2023-12-13T18:28:53
|
|
Revert "Optimize HandleAllocator for fast ID churning."
This reverts commit b25ffe5a9775cc912a304c8552dd9c097a93420a.
Reason for revert: b/316162914
Original change's description:
> Optimize HandleAllocator for fast ID churning.
>
> Instead of calculating ranges of IDs and the overhead with updating
> them every allocation/release, store a released ID list in a small
> FastVector.
>
> Optimize the allocate path for the "good case" of no reserved IDs so
> that it either pops the last released ID or incriments a next value and
> returns it. Release has a similar cost of just a push_back when there
> are no reserved IDs.
>
> This adds a small fixed memory cost due to the FastVector and a dynamic
> memory cost of mReleasedList having up to N elements where N is the
> maxmimum total handles allocated at one time.
>
> Bug: angleproject:8434
> Change-Id: I7c5aa126b5303c105cd2464d0d0933b922cc2b8f
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5101509
> Reviewed-by: Charlie Lao <cclao@google.com>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:8434
Change-Id: Ide43d787b6942cc6b622e3b5d938bfbbbf3b3ebb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5120277
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
b25ffe5a
|
2023-12-07T16:36:29
|
|
Optimize HandleAllocator for fast ID churning.
Instead of calculating ranges of IDs and the overhead with updating
them every allocation/release, store a released ID list in a small
FastVector.
Optimize the allocate path for the "good case" of no reserved IDs so
that it either pops the last released ID or incriments a next value and
returns it. Release has a similar cost of just a push_back when there
are no reserved IDs.
This adds a small fixed memory cost due to the FastVector and a dynamic
memory cost of mReleasedList having up to N elements where N is the
maxmimum total handles allocated at one time.
Bug: angleproject:8434
Change-Id: I7c5aa126b5303c105cd2464d0d0933b922cc2b8f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5101509
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
35e49df7
|
2023-12-11T21:16:57
|
|
FrameCapture: Skip eglQueryContext
We don't use the return value of the call, so it can
be omitted from the capture.
Test: Flip capture
Bug: b/308208067
Change-Id: Ib3dfea2b7bd5638092bd691e66c6b9e2b6fabf15
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5112776
Reviewed-by: Mike Schuchardt <mikes@lunarg.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
9b66848f
|
2023-12-11T20:54:30
|
|
FrameCapture: Handle context Reset with no calls
The code was assuming that setDefaultResetCalls adds
reset calls for an entry point, but it has logic for
skipping if the current state is already default.
This CL checks to see if we added any calls for the
entry point before trying to iterate through them.
Test: Flip capture
Bug: b/308208067
Change-Id: I8a214b0eb0df068d6b3172c0ca1406f6751f91ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5114271
Reviewed-by: Mike Schuchardt <mikes@lunarg.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
282a5fb4
|
2023-12-08T15:53:17
|
|
Fix out-of-bounds vector index when using SPIR-V precision fixer
Accessing mVariableInfoById after id has been replaced by the precision
fixer was causing an out-of-bounds access.
Running SpirvVaryingPrecisionFixer::modifyEntryPointInterfaceList before
SpirvSecondaryOutputTransformer::modifyEntryPointInterfaceList was
causing an out-of-bounds access for the same reason.
Bug: angleproject:8452
Change-Id: I54f7f105ec2fb5aeb3e4234e8e3e052bcc42977c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5105193
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
de591cff
|
2023-12-11T13:15:30
|
|
Vulkan: Add CachedCoherent staging buffer
Right now if we allocate a coherent staging buffer, it always uncached.
I believe the reason it picked uncached is that most usage for staging
buffer is data flow from CPU to GPU. CPU only sequentially write into
staging buffer. Uncached may has better performance here due to write
combined. But this performs horrible if CPU ever read from it. This CL
adds a CachedCoherent staging buffer and let staging buffer use that for
coherent memory. UncachedCoherent is currently not used, but I still
kept here in case we find regression for certain type of usage.
Bug: b/315836169
Change-Id: Ica331914c1f4729baa9d2eab048dc3099a2887b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5112759
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
5c8cb8a6
|
2023-12-07T00:00:00
|
|
Update WebGLReadOutsideFramebufferTest tests
Enabled robust resource init for these tests as they access
out-of-bounds values. This flag is required to pass some of
the tests on Vulkan backend. WebGL clients always set it.
Fixed subresource index computation on D3D11 to
pass CopyTexSubImage3D with 3D textures there.
Added a similar test for 2D array textures.
Bug: angleproject:4092
Fixed: angleproject:4136
Change-Id: I191c6df3c672e583568aadecac5885da015cfa8b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5106511
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
f035cdb4
|
2023-12-11T13:45:22
|
|
Fix SyncID initializer.
Requires brace initialization to work on all compilers.
Bug: angleproject:8430
Change-Id: I6e79f2446f057bf9eaaaecfc9f82b26320c5ba56
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5111600
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
bc301691
|
2023-12-07T00:00:00
|
|
Run PackUnpackTest on all backends
Fixed negative zero serialization for capture/replay.
Bug: angleproject:4092
Change-Id: Ic12a556f56e40064da8bf3a8ce7d01af92c7086a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5106509
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d0eb968d
|
2023-12-08T16:11:46
|
|
Vulkan: Fix the AHB leak for AHB backed buffer object
For client buffer backed OpenGL buffer object, we call
InitAndroidExternalMemory which calls AHB acquire. But when buffer
object is released/destroyed, we never call
ReleaseAndroidExternalMemory, which end up leaking AHB.
Bug: b/314791770
Change-Id: I693c74213e73008497a6dfeca93ea62e84c71352
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5106599
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Charlie Lao <cclao@google.com>
|
|
c27a4a1d
|
2023-11-27T14:44:07
|
|
Re-use EGL sync object allocations.
Create a pool of EGL sync objects with their implementations that can
be re-used. Update all backend implementations to support multiple
calls to initialize/destroy.
Pool size of 32 chosen through experimentation using Chrome.
Bug: angleproject:8430
Change-Id: I86fea41aed35eddccc953efb3802bf5fdb7f3cb2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5063341
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
b8ca8de4
|
2023-12-05T13:36:53
|
|
Vulkan: Don't crash when glCopyTexImage2D redefines itself
The Vulkan backend marks a level being redefined as such before doing
the copy. If a single-level texture was being redefined, it releases it
so it can be immediately reallocated. If the source of the copy is the
same texture, this causes a crash.
This can be properly supported by using a temp image to do the copy, but
that is not implemented in this change.
Bug: chromium:1501798
Change-Id: I9dde99aa0b88bc7d5f582ff15772f70b36f424e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5089150
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d788c2c0
|
2023-12-04T22:43:39
|
|
Remove team members no longer part of the project
Bug: None
Change-Id: I66bf34ece50995fdecfab55a2198e9946e9be4cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5087208
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6d9f0aee
|
2023-11-30T00:00:00
|
|
Metal: Ensure helper invocations when derivatives are used
Set sample coverage mask to ensure that
fragment shader helper invocations are
performed when derivatives are used.
Fixed the following tests on Apple silicon:
dEQP-GLES2.functional.texture.mipmap
.2d.projected.nearest_linear_repeat
.2d.projected.linear_linear_repeat
.cube.projected.linear_nearest
.cube.projected.linear_linear
dEQP-GLES3.functional.texture.mipmap
.2d.projected.nearest_nearest_mirror
.2d.projected.linear_nearest_clamp
.2d.projected.linear_nearest_repeat
.2d.projected.linear_nearest_mirror
.2d.projected.nearest_linear_repeat
.2d.projected.linear_linear_clamp
.2d.projected.linear_linear_repeat
.3d.projected.nearest_nearest_mirror
.3d.projected.linear_nearest_clamp
.3d.projected.linear_nearest_repeat
.3d.projected.nearest_linear_clamp
.3d.projected.nearest_linear_mirror
.3d.projected.linear_linear_clamp
.3d.projected.linear_linear_repeat
Fixed: angleproject:8443
Fixed: angleproject:7023
Change-Id: I13fc52532b94de098dcf3e9f5f02d48a6c8913c7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5089131
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
e9d5f13e
|
2023-12-04T22:36:41
|
|
Vulkan: More trace points in the readpixels path
Occassionally we hit a bad path in this case, this change makes it
clearer from the traces which bad path is hit.
Bug: b/310701311
Change-Id: Ic674d6396b0e88f1a1db3ded7efe195fb7397135
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5087207
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
74f9da02
|
2023-12-04T19:53:25
|
|
Vulkan: Remove spam about depth/stencil feedback loop
It triggers a warning even if the application is appropriately using
BASE and MAX levels to avoid feedback loop.
Bug: b/289436017
Change-Id: Ie7e8281908802e91dfaad1b49dd95197ac6de1a1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5086070
Commit-Queue: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
fb6b960c
|
2023-11-27T14:24:28
|
|
Remove GL_CHROMIUM_texture_filtering_hint
This was using an unregistered Vulkan extension to set the precision of
SwiftShader's internal filtering for the sake of Chrome. That's baked
in at build instead.
Bug: angleproject:8349
Bug: chromium:726075
Change-Id: I12849d2d29d99626f22a92ee9d74366f78658476
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5063344
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
90767546
|
2023-12-01T12:27:15
|
|
Vulkan: Add test for __samplerExternal2DY2YEXT then swizzle
Added a correctness test
SourceYUVTextureTargetExternalRGBSampleYUVSampleWithSwizzle for applying
swizzle after sampler.
Also removed some bug workaround for VVL and drivers since they are
fixed now.
Bug: b/309480316
Change-Id: If82b2251745a96335b535c67b6e0c0847268b25b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5080497
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b46cf698
|
2023-11-30T11:00:18
|
|
Vulkan: Fix Android deadlock with querying buffer age
Similar to eglSwapBuffers, eglQuerySurface with EGL_BUFFER_AGE_EXT can
cause a call to vkAcquireNextImageKHR.
Bug: angleproject:6851
Bug: b/313975825
Change-Id: If3f0521219cab9aba2aeb2b70958bf0f197bc96a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5077406
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
edcfab40
|
2023-11-23T00:00:00
|
|
Metal: Implement textureCubeGrad transformation for AGX
Wrapped all affected built-in function calls
with helpers that transform derivative values.
Fixed all *.texturegrad.* dEQP failures on Apple silicon.
Fixed: angleproject:7021
Fixed: angleproject:8433
Change-Id: I16b023840ad267ab72d31fde3cb0fa7048e5310c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5071254
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
3fe678c9
|
2023-11-30T12:15:57
|
|
Avoid malloc in VertexArrayVk::mergeClientAttribsRange
Replace temporary std::vector with angle::FixedVector
Bug: b/300968773
Change-Id: I002233afc99c0eb03a5ad11ab7a5bfd85626b3a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5074625
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3680a5dc
|
2023-11-17T13:51:07
|
|
Vulkan: Let program warmup continue passed link
The warmup task does not actually affect the link results, so there is
no reason to wait for it when the application queries the link status.
This change allows the warm up task to continue in parallel until the
program is used at draw time. This allows the warm up to be more
efficient when the link itself is not parallelized.
For applications that create programs in the middle of every frame, it's
still likely best to disable warm up (as the following immediate draw
will already effectively do the warm up).
Note that currently the warm up code in the Vulkan backend is not
completely thread-safe, and so the program still blocks on that task
before the first draw can happen (or the program is modified in any
way).
Bug: angleproject:8417
Change-Id: I0877fef39a0585c3279e32699ce817d4643d7cd6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5037538
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d842f3db
|
2023-11-29T06:53:58
|
|
Vulkan: add a disableSeparateShaderObjects feature
Dota Underlords uses one PPO and keeps swapping the attached program.
Though we get cache hit, the hundreds pipeline creation calls still
amount to non-trivial CPU overhead via ANGLE. The use of SSO has been
disabled by the app in certain cases, and this feature is added to
support entirely disabling SSO in ANGLE on all Vulkan backend impls.
Bug: b/309028728
Test: Dota Underlords easily hits target FPS on ANV and RADV
Change-Id: I54532975237218563b8750f1878a83e386fe776d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5073414
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6f4f5e39
|
2023-11-18T22:15:49
|
|
Fix checking result of link sub tasks
Bug: angleproject:8297
Change-Id: I143a26be6e7340a4a2d2b917bbe4dd9dd474f7af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5042346
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b746dc3b
|
2023-11-29T17:40:53
|
|
Vulkan: Fix assertion when texture's min/mag filter disagree
Camera CTS test testCameraGpuEncoderPath[1] is hitting assertion due to
minFilter is NEAREST but magFilter is LINEAR. This CL use sampler's
filter if min/mag agrees. Otherwise it uses default YCbCr chroma filter.
The min/mag filter will still apply separately if
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
is set. If this bit is not set, we will force all of three filter to be
the same anyway.
Bug: b/302196568
Bug: b/308208067
Change-Id: I19007a107cfcea0f839cb66c236a70c003c43653
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5074826
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
820e0d7a
|
2023-11-29T13:39:27
|
|
Compute the shader hash without copying objects.
The shader hash was calculated by generating a large string and then
sha1 hashing the string. sha1 can be generated with a fixed memory cost
using the angle::base::SecureHashAlgorithm class.
Bug: angleproject:8434
Change-Id: I816e2c3bbc7283cd5424621b4cc8f6dab0407aa4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5073293
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2a6336ed
|
2023-11-29T13:35:57
|
|
Don't construct a compiler instance on shader cache hits.
We can avoid constructing a shader compiler instance and then
destroying it when we get shader cache hits. The resources and output
type are available from the root gl::Compiler object.
Bug: angleproject:8434
Change-Id: I2de43db34dc1b86265aa648b1275e32814487ff4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5073292
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
058a2fd6
|
2023-11-28T17:38:28
|
|
Clear active queries before Begin
Bug: angleproject:8415
Change-Id: I97dfd904d65933a66f25cd168c50fe150ef9c765
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5068525
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Sergey Kataev <sergeyka@chromium.org>
|
|
f7eb7efb
|
2023-11-28T11:20:57
|
|
Vulkan: Fix camera panorama hang
When EGL attributes does not speficy color space, right now we pick
VK_COLOR_SPACE_SRGB_NONLINEAR_KHR. This overwrites the color space
people set via ANativeWindow. This causes camera goes into CSC
conversion and errors out and stops media codec pipeline and causes
camera to hang. This CL enables mapUnspecifiedColorSpaceToPassThrough
feature flag for all platform that supports VK_EXT_swapchain_colorspace
so that it will pick VK_COLOR_SPACE_PASS_THROUGH_EXT and vulkan
swapchain code will try to keep whatever color space surface already
has. The feature flag is still kept here in case there is regression and
we need to experiment this feature flag again. We can remove it once
everything settles down.
This CL also adds updateColorSpace() and getActualFormatID() to
de-duplicate the logic of R8G8B8_UNORM overriding and use of
VK_COLOR_SPACE_PASS_THROUGH_EXT.
Bug: b/309480316
Bug: b/302196568
Change-Id: I0952fe78c2bfd59446391c553745b2b5cb152a9d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5066801
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
05e9ec11
|
2023-11-23T00:00:00
|
|
Metal: Saturate floating-point depth textures on upload
Metal does not clamp uploaded floating-point
depth texture values to the normalized range.
Used a compute shader to enforce
the expected OpenGL ES semantics.
Fixed the following tests on Intel and Apple GPUs:
dEQP-GLES3.functional.texture.specification
.teximage2d_depth.depth_component32f
.teximage2d_depth.depth32f_stencil8
.teximage2d_depth_pbo.depth_component32f
.teximage2d_depth_pbo.depth32f_stencil8
.teximage3d_depth.depth_component32f_2d_array
.teximage3d_depth.depth32f_stencil8_2d_array
.teximage3d_depth_pbo.depth_component32f_2d_array
.teximage3d_depth_pbo.depth32f_stencil8_2d_array
.texsubimage2d_depth.depth_component32f
.texsubimage2d_depth.depth32f_stencil8
.texsubimage3d_depth.depth_component32f_2d_array
.texsubimage3d_depth.depth32f_stencil8_2d_array
Fixed: angleproject:8422
Fixed: angleproject:8426
Change-Id: I843024f098fef2fbca15e7b6124052681d05b6ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5062710
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
333e3a9c
|
2023-11-28T12:12:44
|
|
Re-add VUID-vkDestroySemaphore-semaphore-01137 temporarily
To unbreak ANGLE-> Chromium swangle..
https://crrev.com/c/5066784
Bug: angleproject:7729
Change-Id: Ic7aaa10540cb9c6581872c9709b2d329eae4b8f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5067854
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
233b6675
|
2023-11-28T12:48:17
|
|
Roll vulkan-deps from e892a337898c to 47125179fa7d (24 revisions)
VVL renamed
VUID-vkDestroySemaphore-semaphore-01137
->
VUID-vkDestroySemaphore-semaphore-05149
https://chromium.googlesource.com/vulkan-deps.git/+log/e892a337898c..47125179fa7d
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/153064f2c7..b820431a2c
* spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/42299f92ef..50e90dd74e
* spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/2a238ed24d..7d2a618bf9
* vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/7d92fe7b68..9d27c893cd
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/0e7cf57a29..b00cb455c4
* vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/9ef6c05af3..98d168c168
* vulkan-utility-libraries: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries.git/+log/228f7487dd..1fb77ad1d4
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/4d7cdcc223..e00625d685
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,romanl@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:7729
Tbr: romanl@google.com
Change-Id: I8268b3532b78aa4362e632ae68f335b6808966e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5066853
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
1ff6a6f2
|
2023-11-27T13:08:29
|
|
Pass the attribute map to egl::Sync::initialize.
The attribute map was typically passed to the impl objects in the
constructors. Instead, pass it to the initialize function. This removes
the need for many member variables in different backends and opens up
the future optimization of re-using sync objects by calling
initialize on them with new attributes.
Bug: angleproject:8430
Change-Id: If69970462cfed39d9a205034adb5ddd937c5ea31
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5063335
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
99b077b7
|
2023-11-26T08:24:18
|
|
Vulkan: fix data clobbering with AllocateNonZeroMemory
The offset of the suballocation was not being used when initializing
memory, so it was possible to overwrite the start of an existing buffer
with garbage.
Bug: angleproject:8427
Change-Id: I8205068a173dc4342894c6c49ee5fa9c4a8a255a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5060776
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Steven Noonan <steven@uplinklabs.net>
|
|
aa3bebf9
|
2023-11-18T22:15:11
|
|
GL: Fix parallel link query of in-progress link
Bug: angleproject:8297
Change-Id: Iab2f12467a2c567c945742435939057a40642951
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5042345
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c8f707f8
|
2023-11-16T00:00:00
|
|
Metal: Simplify MSL sRGB conversions
* Used metal::powr instead of metal::pow
because the arguments are non-negative.
* Reduced nesting.
Bug: angleproject:8366
Change-Id: Ibc50880060c12217b4ee8452c662d346a1cb273a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5040993
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
|
|
fba482b7
|
2023-11-22T12:01:31
|
|
Fix off-by-one bounds check on uniform location.
Log an error when the user provides an invalid uniform location.
Bug: chromium:1504162
Bug: chromium:1484878
Change-Id: Ieb7eb964d508954ac8dfa8e4d9bd941778185223
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5054238
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: James Godfrey-Kittle <jamesgk@google.com>
|
|
98d79260
|
2023-11-09T10:15:11
|
|
Metal: use release-consume order for queue's serials.
Currently mtl::CommandQueue's mCommittedBufferSerial,
mCompletedBufferSerial use relaxed memory order for load & store.
They should use consume & release memory order respectively instead.
Bug: angleproject:8406
Change-Id: I871259f1a6cca0e63d6c24b7592e7b80fd443dff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5015524
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
170ba8c9
|
2023-11-16T19:45:35
|
|
Vulkan: Workaround depth bias constant factor on RADV
Both ANV and RADV need the same workaround. Improve IsRADV to support
Venus-over-RADV.
Also "git cl format" to make presubmit happy.
Bug: b/308835020
Test: dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units
Change-Id: Ibbad4d09f12df419e38aff1365d37d55ca326532
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5040097
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Chia-I Wu <olv@google.com>
|
|
8ae36a93
|
2023-11-14T10:11:51
|
|
Vulkan: Bugfix in isFastUnpackPossible
Disallow fast unpack when there is a mismatch between the
actual texture format and intended buffer (PBO or client buffer)
format.
Bug: angleproject:3777
Test: Texture2DTestES3.UnpackCompatibleFormatButDifferentType*
Change-Id: I9ea9d9cdd5e1391acebb3d75d69437e27cfa90df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5029504
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
3944ffce
|
2023-11-13T18:32:13
|
|
Add missing validation code
The validation code for below GLES 3.2 entry points
is added:
GL_TexParameterIiv
GL_TexParameterIuiv
GL_GetTexParameterIiv
GL_GetTexParameterIuiv
GL_SamplerParameterIiv
GL_SamplerParameterIuiv
GL_GetSamplerParameterIiv
GL_GetSamplerParameterIuiv
Also add extension check in validation functions
of entry points that are exposed through these two extensions:
GL_OES_texture_border_clamp
GL_EXT_texture_border_clamp
The validation functions of GL_OES_texture_border_clamp
extension are moved to validationESEXT.cpp for readability.
Bug: b/286572199
Bug: b/224537784
Change-Id: I77ed22e8dc961a30a5d86b0597c25555d15c517b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5028139
Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d4281637
|
2023-11-15T13:17:36
|
|
Add names to worker threads
Bug: angleproject:8417
Change-Id: I5841d194cb695387aa8fe48638cc025173152347
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5034797
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e8923a62
|
2023-11-14T00:00:00
|
|
Clamp gl_PointSize to both bounds
Ensure that point size values smaller than
ALIASED_POINT_SIZE_RANGE[0] are clamped as
the spec requires.
Fixed: angleproject:8416
Change-Id: I3cfd2b1d3c1f34788d062ff4ca4b809ce3b5aaa9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5033198
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c5eb810b
|
2023-11-14T15:01:25
|
|
Remove angle::Result::Incomplete entirely
Bug: angleproject:8414
Change-Id: I8d607614614360b65c530e3e7647d8a7ba38b18e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5031191
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
dd8432b5
|
2023-11-14T14:39:45
|
|
Remove angle::Result::Incomplete from shader/program paths
angle::Result is not an error code, and having Incomplete made it very
unclear what the purpose of this class is.
A follow up will remove it entirely.
Bug: angleproject:8414
Change-Id: Ica8271b9f7d8868671c7658161e50a53ef23c681
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5028091
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a982e241
|
2023-11-01T10:11:09
|
|
renderergl_utils: check strings from glGetString for nullptr
Return empty string instead. It is not valid to construct
std::string or perform sscanf on a nullptr.
Bug: chromium:1498447, chromium:1408916
Change-Id: Iae1f2fdb1c2dfc80597aa0a6008c50d7cda33527
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4411066
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
95bacc28
|
2023-11-09T00:00:00
|
|
Metal: Override texture wrap modes for cube maps
Always use clamp-to-edge texture wrapping for
cube maps with OpenGL ES 3.0+ client contexts.
Fixed the following tests on Apple silicon:
dEQP-GLES3.functional.texture.filtering.cube.sizes.63x63_nearest
dEQP-GLES3.functional.texture.filtering.cube.sizes.63x63_nearest_mipmap_nearest
dEQP-GLES3.functional.texture.filtering.cube.sizes.63x63_nearest_mipmap_linear
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_nearest_repeat_repeat
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_nearest_repeat_mirror
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_nearest_mirror_repeat
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_clamp_repeat
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_repeat_clamp
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_repeat_repeat
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_repeat_mirror
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_clamp_repeat
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_mirror_repeat
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_clamp_repeat
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_repeat_clamp
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_mirror_repeat
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_clamp_repeat
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_repeat_clamp
dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_mirror_repeat
Fixed: angleproject:7022
Change-Id: I52079b3e8de5ab052a20dd8aee7ead626ced9188
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5030451
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
4256d055
|
2023-11-09T00:00:00
|
|
Metal: Use a quad for blit with draw
Adjusted blit emulation to use a two-triangle quad
instead of an implicitly clipped triangle to avoid
interpolation artifacts on Apple silicon.
Reduced the BlitParams struct size from 48 to 32 bytes.
Disabled perspective correction as it has no effect anyway.
Fixed the following tests on Apple silicon:
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_x
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_y
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_x
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_y
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_x
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_y
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_y
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_y
Fixed: angleproject:8408
Change-Id: Iba8dd1c206ff859aa3e635d72adab45608496e7a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5018858
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
90278ecf
|
2023-11-09T00:00:00
|
|
GL: Support polygon mode extensions on OpenGL ES
Expose NV_polygon_mode and ANGLE_polygon_mode
when the native OpenGL ES driver supports the
required functionality.
Bug: angleproject:1791
Bug: angleproject:8132
Change-Id: I6a273640b5ef38e79e5d11f313cb90a9c79d0485
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5023849
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ade3dacd
|
2023-11-06T21:56:41
|
|
Do compile/link unlocked if not threaded (but thread-safe)
If GL_KHR_parallel_shader_compile is not supported, or it is not used to
do threaded compilation and link, this change lets the compile and link
jobs be done after releasing the share group lock. With
multithreaded/multi-context applications, this allows the other context
(typically the main context) to make progress in the meantime.
A typical scenario where this optimization matters is games seamlessly
loading a new area of the game and performing compilation and link in a
separate context. Before this change, the game would stutter as the
compile/link jobs prevent the main thread from drawing anything. With
this change, the hitching is removed.
Bug: angleproject:8297
Change-Id: I702d84324a7442561b49677bf42c16d650304313
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5006640
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
93b97a59
|
2023-11-03T22:07:23
|
|
Make link job directly wait on compile job
Previously, program link waited on the compile job on the calling thread
before launching the link job. As a result, sequences of intermixed
compile and link would get largely serialized as such:
Main Thread Thread 1 Thread 2 Thread 3 Thread 4
Compile -------> Compile
Compile -----------|----------> Compile
Link | |
Wait | |
| | |
|<--------------/--------------/
\------------------------------------------> Link
Compile -------> Compile |
Compile -----------|----------> Compile |
Link | | |
Wait | | |
| | | |
|<--------------/--------------/ |
\---------------------------------------------|-----------> Link
Compile -------> Compile | |
Compile -----------|----------> Compile | |
Link | | | |
Wait | | | |
| | | | |
...
With this change, the main thread no longer waits for compilation to
finish. It's the link job itself that does the waiting. This allows
the main thread to go through Compile and Link commands without
blocking, generating as many jobs as needed. The above scenario
therefore becomes:
Main T1 T2 T3 T4 T5 T6 T7 T8 T9
C ----> C
C ------|----> C
L ------|------|----> L
C ------|------|-------W---> C
C ------|------|-------|-----|----> C
L ------|------|-------|-----|------|----> L
C ------|------|-------|-----|------|-------W---> C
C ------|------|-------|-----|------|-------|-----|----> C
L ------|------|-------|-----|------|-------|-----|------|----> L
. \-----\------>/ | | | | | W
. | \-----\------>/ | | |
. | | \-----\------>/
. | | |
. | | |
This greatly improves the amount of parallelism compile and link jobs
get.
The careful observer may note that the link job being blocked on the
compile job is now wasting a thread from the thread pool. While this
change is strictly an improvement, parallelism can be further improved
if the link job is just not assigned to a thread until the corresponding
compile jobs are finished. This is currently not possible, but may be
if:
- Instead of a thread pool, the operating system's FIFO scheduler is
used. Then the operating system would automatically put blocking
tasks to sleep and pick up another task. This has the downside of
requiring threads to be created for each task.
- The thread pool work scheduler is enhanced to be made aware of
relationship between tasks and avoid scheduling jobs whose
dependencies are not yet met.
Alternatively, the number of threads in the pool can be increased by 30%
and hope for the best.
Bug: angleproject:8297
Change-Id: If4e6540ade47558a10cfab55e2286f073b904928
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5006874
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
3a6b385f
|
2023-11-09T15:48:48
|
|
Vulkan: Fix depth/stencil texture copy
Bug: angleproject:7289
Change-Id: Icde8a26e855e95a6c0a1e506d2435e981adc6f28
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5018798
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
d896fab8
|
2023-11-09T15:03:05
|
|
Vulkan: Fix texture self-copy
A new layout is introduced to support self-copy.
Bug: angleproject:7289
Change-Id: Ib914c433d55b9a79cfeb7a91f8a2b8680824d473
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5018797
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
e56cde03
|
2023-11-06T11:50:38
|
|
GL: Reset mLocalDirtyCurrentValues after syncronizing
StateManagerGL::setAttributeCurrentData sets the bits in
mLocalDirtyCurrentValues, leaving them set after syncState. All current
values would be re-synchronized every time any the
DIRTY_BIT_CURRENT_VALUES bit was set.
Bug: chromium:1496378
Change-Id: I93b78c8f2d576f5583ac629660f189c268a154d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008036
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2155534b
|
2023-11-06T11:49:20
|
|
Don't set dirty bits for attribs that are out of range.
PrivateState::setAllDirtyBits sets all bits in mDirtyCurrentValues.
When the context has fewer max attibutes than MAX_VERTEX_ATTRIBS, this
can cause out-of-bounds access to
PrivateState::mVertexAttribCurrentValues if the dirty bits are iterated
over without range validation.
Bug: chromium:1496378
Change-Id: I65481c432263a6e353a9361bba741b97dc5e20b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008034
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
cea3775c
|
2023-11-02T15:41:06
|
|
Vulkan: Suppress VU Undefined-Value-ShaderOutputNotConsumed
Bug: angleproject:8401
Change-Id: I3b561ec98090cf1c0050f113db96ea0c6c79d785
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5002728
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
a494c1d6
|
2023-11-07T16:29:07
|
|
GL: Fix compilation on drivers sensitive to initial comment
Prior to
https://chromium-review.googlesource.com/c/angle/angle/+/4994655, debug
info was **prepended** to the translated source in the form of a comment
after the compilation was done. In that change, this was done after
translation and before the translated source was handed to the backend
compiler.
Some GL drivers however failed to compile the shader after this change
because the #version line was no longer the first one in the shader.
This is fixed by **appending** the debug info instead.
Bug: angleproject:8297
Change-Id: I88b31fa128de304dc8bf32289bf20a29169883a8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5007223
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
12cc04d0
|
2023-11-07T10:26:18
|
|
Vulkan: Workaround camera AHB's layerCount being random value
We are seeing AHB used by google's camera app has random value in the
layerCount. In my reproduced case, it is 0, which translates to
layerCount in the VkImage. Sometimes I am also seeing a huge number in
the layerCount as well. This causes problem in ARM driver that end up
with assertion and other problems that end up with crash later. We need
to root cause the underlying bug which is tracked by b/239181279. But
before we have an actual fix in AHB creation code, this CL forces
com.google.android.GoogleCamera AHB's layerCount to be 1 as a temporary
app specific bug workaround so that we can move forward to get camera
app up running with ANGLE.
Bug: b/309480316
Bug: b/239181279
Change-Id: I219f6f89863a2cb8dee6c5efb0812389272373ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5010082
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
383df961
|
2023-11-06T22:00:52
|
|
Metal: only convert vertex if offset is not multiple of 4.
Previously we always convert vertex attribute if its binding offset
is not multiple of the attribute's size. This requirement seems to be
unnecessary.
This CL removes that requirement so the only requirement left for offset
is that it must be multiple of 4.
Bug: chromium:1496807
Change-Id: I35c421951c7817b77bd0c006ed4b72cd04b5a8d7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5006359
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
7b62e4f5
|
2023-11-06T00:00:00
|
|
D3D11: Avoid GLenum conversions in GetBlendStateKey
Bug: b/300968773
Change-Id: Ia41f77e686e0f1afc91381e29334f73859868129
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5009815
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0584ffd8
|
2023-11-06T16:34:13
|
|
Unsuppress VUID-VkGraphicsPipelineCreateInfo-pStages-00739
Possibly was due to a VVL bug
https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/6717
Bug: b/303219657
Change-Id: Ic9a6e7b45fb42572af04f94382906cd6f0f512df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008042
Auto-Submit: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
c114fc26
|
2023-08-28T15:40:26
|
|
Reland: Verify shader link correctness after looking up in program cache
Since the program cache takes shader sources into account, if the cache
is hit the shaders should have been correct for link.
Bug: angleproject:8297
Change-Id: Iccadc63a976689d7fa06d0a5ccfe81a594c424e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5003236
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5a71be90
|
2023-11-03T15:07:06
|
|
D3D: Make non-constant loop indexing limitation a feature flag
... instead of exposing it as a front-end limitation only to set a
shader flag in the front-end.
Bug: angleproject:1130
Change-Id: Idbd9a1b7b79d231bd9fc1c0061c768df4aaab92d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5004847
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|