|
3892ac14
|
2023-10-12T13:35:33
|
|
Do not flush normal float constants to zero.
It's ok to flush denormalized constants to zero.
It's not ok to flush perfectly valid normal float constants >= FLT_MIN
to zero.
Two problems:
1) Values when parsed as doubles with a value less than FLT_MIN are
being flushed to zero. This is incorrect when the comparison is done
in double, since some values below FLT_MIN in double are equal to
FLT_MIN when cast to float. The fix is to perform the comparison in
float.
2) Values with a decimal exponent less than FLT_MIN_10_EXP are being
flushed to zero. FLT_MIN_10_EXP is -37 but FLT_MIN is 1.1754943E-38.
10^-37 may be the "minimum negative integer such that 10 raised to
that power is a normalized float", but being constrained to powers of
ten it's above FLT_MIN (which is 2^-126). Since this comparison is
done before #1 above, it's only present (AFAIK) to ensure that the
exponent will not make the pow() function overflow. Comparing against
-38 (FLT_MIN_10_EXP - 1) instead will do the trick.
Bug: angleproject:8373, dawn:2077
Change-Id: I1ddf410c2caa9f0d1ba3529ace693dcd326a2cb3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4936714
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
|
|
c54c2f81
|
2023-10-12T00:00:00
|
|
Sync border color on format updates
When a texture is redefined, its border color should
be resynced because of format-specific adjustments.
Used memcmp for comparing ColorGeneric structs.
Bug: angleproject:7969
Change-Id: If0e3e0bc7761c26dab6d00ab24462c789f5b90bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4935866
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
1988108e
|
2023-10-12T00:00:00
|
|
Tighten draw buffers validation for dual-source blending
Use the front-end DRAW_BUFFER* state instead of the
internal mask, which is unset for missing attachments.
Bug: angleproject:1085
Bug: angleproject:7177
Change-Id: I5311d1f26043f15035e51957920bf9cd553c3007
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4935858
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b870956e
|
2023-10-05T00:00:00
|
|
GL: Limit depth/stencil texture mode updates
The DEPTH_STENCIL_TEXTURE_MODE state must affect only
DEPTH_STENCIL textures (OpenGL ES 3.2, Section 8.16).
Some drivers do not follow this rule and exhibit various
side effects when this mode is set to STENCIL_INDEX for
textures of other formats.
Bug: angleproject:2373
Change-Id: I20a8168d858cf070762ff0b3b7111cdf30e8166d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4936374
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
43acadab
|
2023-10-06T15:05:36
|
|
Add missing configurations for khr tests
KHR-GLES* tests are ran with configurations defined in
glcKhronosMustpassEs.hpp:
https://github.com/KhronosGroup/VK-GL-CTS/blob/main/external/openglcts/modules/runner/glcKhronosMustpassEs.hpp,
when launching the conformance test from Khronos
Conformance Package. This change adds the missing
configurations in test_suites.pyl, for vulkan backends
and swiftshader backends.
Bug: b/297901032
Change-Id: I87e77ca8756b883ef08551919f67904ecf21aa97
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4918582
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
a0967770
|
2023-10-06T18:01:45
|
|
Add egl/wrapper headers to deqp opengl sources
gn gen --check catches these and "include not allowed"
Bug: b/303881910
Change-Id: I26728dc2618436daec232152c56d59a7233ca91e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4916365
Auto-Submit: Roman Lavrov <romanl@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
0afc3ec9
|
2023-10-05T00:00:00
|
|
Metal: Fix robust initialization of PVRTC1 textures
Replace Region Validation: rowBytes must be 0 for:
* MTLPixelFormatPVRTC_RGB_2BPP
* MTLPixelFormatPVRTC_RGB_2BPP_sRGB
* MTLPixelFormatPVRTC_RGB_4BPP
* MTLPixelFormatPVRTC_RGB_4BPP_sRGB
* MTLPixelFormatPVRTC_RGBA_2BPP
* MTLPixelFormatPVRTC_RGBA_2BPP_sRGB
* MTLPixelFormatPVRTC_RGBA_4BPP
* MTLPixelFormatPVRTC_RGBA_4BPP_sRGB
Fixed: angleproject:8370
Change-Id: I153bea5bb487f79b0966be0b8670a2ee4e3aeb39
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4915704
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
7e8907db
|
2023-10-06T15:41:05
|
|
Add egl/wrapper to deqp opengl includes
Needed to roll VK-GL-CTS upstream change:
https://issuetracker.google.com/303881910
Bug: b/303881910
Change-Id: Idffa299cc6c1d277702167bf50e1d944febb9e7e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4915605
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
0015d1e2
|
2023-10-05T00:00:00
|
|
Allow ETC1_RGB8 for 2D array textures
When GL_EXT_compressed_ETC1_RGB8_sub_texture is enabled,
ETC1_RGB8 format must be accepted for 2D array textures.
Bug: angleproject:5731
Change-Id: Ic5e647ffd4e7d2a171e25ea8cf3f41514cf37072
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4915918
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
65e8ae30
|
2023-10-06T09:42:45
|
|
Vulkan: ANGLE_device_vulkan is incompatible w/ asyncCommandQueue
The application may use EGL_ANGLE_device_vulkan to retrieve ANGLE's
Vulkan queue for direct usage. There is no mechanism for the
application to synchronize with the internal thread that uses the same
queue when the asyncCommandQueue feature is enabled.
This was causing flakiness where VVL reported this error. This change
makes sure an ASSERT catches this incompatible usage.
Bug: angleproject:7204
Bug: b/299693666
Change-Id: Idf349f99d80b7bbddeb9a0b2d72e3dd7c707fa5c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4915594
Reviewed-by: Roman Lavrov <romanl@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d6bf8e0d
|
2023-10-02T18:10:36
|
|
Improve capture_replay_tests (win-trace) logging
* Get rid of the CRASH expectation as it is always confusing. Replace
items in expectations with SKIP_FOR_CAPTURE. This will no longer run
the corresponding tests (which was making logs even more confusing)
* Use CaptureFailed and ReplayFailed instead of Crashed status (the
actual meaning is a non-zero return code from the test harness)
* Introduce batch names by indexing them as they are created:
batch_000, batch_001, ...
This enables easy searching in logs.
* When logging a batch (result) include its name and why it is logged
* Failed batches are printed with full output instead of "abbreviated"
output. One issue with b/303065176 was that an important part
of the output (errors) was truncated by this "abbreviation"
* Remove "regression log" and "Summary" as these are often just
confusing: regression log just duplicates information printed earlier
and summary may not be clear w.r.t test expectations. The part that
prints what was unexpected is still there. It also now includes
batch names so it's much more obvious what comes from where. Example:
Unexpected 'CaptureFailed' (8):
!= Pass: batch_000 FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithBellowBaseLevelLOD/ES3_Vulkan_SwiftShader
!= Pass: batch_000 FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithBellowBaseLevelLOD/ES3_Vulkan_SwiftShader_AsyncCommandQueue
!= Pass: batch_000 FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithBellowBaseLevelLOD/ES3_Vulkan_SwiftShader_EnableParallelCompileAndLink
!= Pass: batch_000 FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithSubImageWithBeyondMaxLevel/ES3_Vulkan_SwiftShader
!= Pass: batch_000 FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithSubImageWithBeyondMaxLevel/ES3_Vulkan_SwiftShader_AsyncCommandQueue
!= Pass: batch_000 FramebufferTest_ES3.RenderAndInvalidateImmutableTextureWithSubImageWithBeyondMaxLevel/ES3_Vulkan_SwiftShader_EnableParallelCompileAndLink
!= Pass: batch_000 FramebufferTest_ES3.RenderImmutableTextureWithSubImageWithBeyondMaxLevel/ES3_Vulkan_SwiftShader
!= Pass: batch_000 FramebufferTest_ES3.RenderImmutableTextureWithSubImageWithBeyondMaxLevel/ES3_Vulkan_SwiftShader_AsyncCommandQueue
Unexpected 'FailedToTrace' (1):
!= Pass: batch_001 FramebufferTest_ES3.RenderSampleDepthTextureWithExcludedLevel/ES3_Vulkan_SwiftShader
Bug: angleproject:7519
Bug: b/303065176
Change-Id: Ie0c4734c7c4ac965aa6fd38b0c1783e0b92af7a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4908349
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
8c341cfd
|
2023-10-04T12:49:59
|
|
Vulkan: Fix blits involving 3D images
The layer vs depth value involved with 3D images when calling
vkCmdBlitImage is fixed in this change.
However, that brought to light that the combination of
VUID-vkCmdBlitImage-srcImage-00240 and
VUID-vkCmdBlitImage-dstImage-00252 make it impossible to blit between 3D
and 2D array images, which is likely a spec oversight.
This change makes 3D<->2DArray blits fall back to draw-based blit. This
in turn exposed the fact that 3D images as src were not handled in
BlitResolve.frag. A new Blit3DSrc.frag shader is added which shares
code with BlitResolve.frag to implement this. This is a separate shader
to avoid creating unnecessary and invalid combinations of shaders.
VK_EXT_image_2d_view_of_3d could have been used to avoid this new
shader, but that is not ubiquitous.
Bug: angleproject:7291
Bug: dawn:1962
Change-Id: I6a96162f95829304b4731d43208d9d054f538105
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4911800
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
856a6ec0
|
2023-10-03T17:17:35
|
|
Enable rgb-565-no-depth-no-stencil tests on Android Bots
Enable gles3 and gles31 rgb-565-no-depth-no-stencil tests
on Android Bots.
Khronos conformance package ran the gles3 and gles31 tests with
rgb-565-no-depth-no-stencil configurations on Android devices:
https://github.com/KhronosGroup/VK-GL-CTS/blob/main/external/openglcts/modules/runner/glcAospMustpassEs.hpp#L41
Enable the rgb-565-no-depth-no-stencil configuration
tests on Android bots to cover them.
Non-Android platforms do not support rgb-565-no-depth-no-stencil
configuration. We should not enable it on non-Android platforms.
This CL also disables this configuration from
building on non-android platforms in src/tests/BUILD.gn.
Bug: b/297901032
Change-Id: I23d83213818884ea679dd76bf4b001c3b636dffc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4908171
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
ffb32380
|
2023-10-02T16:01:37
|
|
Vulkan: Fix device creation on multi-queue devices
When multiple eligible queue families are exposed by the device, ANGLE
defers devices creation until a surface is made current, at which point
it selects a queue family that supports presentation to that surface.
This path was largely untested and was broken:
- Some post-device-creation initialization was not deferred until the
device was actually created
- Some cap calculation depended on the chosen queue family index
- Query of device capabilities was done too late, such that ANGLE could
not correctly determine the level of support for ES versions.
Bug: angleproject:8300
Change-Id: I2a35396d1fd08ed26d217dff07d10e9a9c1ac55f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4907895
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
1eccf863
|
2023-10-03T16:18:07
|
|
Handle non-debuggable com.android.angle.test on device
Noticed in capture_tests on CI, and angle_perftests also runs into this.
When a non-debuggable test apk is installed on the device the hash check
fails as run-as does not work for non-debuggable apps.
It's just an optimization to avoid re-installing the apk though, so just
warn about the error and re-install the apk.
Bug: b/303276423
Change-Id: Iecc68de285454043fc7f090163af373a22e11e41
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4910152
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
7f5143c2
|
2023-10-02T15:38:15
|
|
Vulkan: Notify VAO when VBO's mBufferWithUserSize changed.
When buffer robust access is enabled, and bufferData is called with
different size and we end up reusing the underline storage, we will have
to recreate VkBuffer with user's size, and driver is relying on
VkBuffer's size to implement robust access. The bug here is that we
notify VAO when storage changes. But when storage is reused and we have
dedicated VkBufer with user size and that VkBuffer changed, we were not
notifying the VAO. This CL adds that notification so that VAO gets
notified and dirty bits processed and its cache of VkBuffer gets updated
Bug: chromium:1488055
Bug: b/303138134
Change-Id: Ie693c92c2edde9a22a41a25f5bde493397550d95
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4906568
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8b9500ae
|
2023-09-28T16:15:21
|
|
Enable multisample deqp tests on bots
Enable gles3 and gles31 deqp multisample tests on bots.
Khronos conformance package ran the tests in gles3 and
gles31 mustpass list with multisample config rgba8888d24s8ms4:
https://github.com/KhronosGroup/VK-GL-CTS/blob/main/external/openglcts/modules/runner/glcAospMustpassEs.hpp#L24
Enable the multisample config tests on bots cover the tests.
This CL only enables the multisample tests on Vulkan
backends (including swiftshader) on Android, Linux, Windows,
as we are prioritizing vulkan backend development.
Bug: b/297901032
Change-Id: Iaa830bd466e3564bb1e83c98cc360bd5a85abf86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4903430
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
e9719f5c
|
2023-10-02T12:15:35
|
|
Capture/Replay: Disable VK_EXT_host_image_copy during capture
Bug: b/303065176
Change-Id: I87f9dd11cd87115f097bb35d44f024db19274d51
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4903077
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4ace4da1
|
2023-09-28T00:00:00
|
|
Metal: Add 2D array and 3D texture type mappings
Do not try to copy texture levels with mismatching
layer counts to avoid triggering Metal validation.
Fixed: angleproject:8364
Change-Id: I4bc72be753a62dd78dc131562c62e14eb540ab2a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4901993
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
961ed7a2
|
2023-10-02T15:07:44
|
|
RepeatedEglInitAndTerminate: 100 -> 50 repetitions
One of the variants
ES3_1_Vulkan_SwiftShader_EnableParallelCompileAndLink
is taking >60s which seems a bit too much time for this kind of test
Bug: b/303089709
Change-Id: I75584bf376cfac8e4ddd61b21ccd75b9ac6d2967
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4908348
Commit-Queue: Roman Lavrov <romanl@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
32ef34df
|
2023-10-02T10:30:48
|
|
Remove the dEQP-EGL.functional.color_clears*/render* test suppression
The dEQP-EGL.functional.color_clears* and
dEQP-EGL.functional.render* test failures on Pixel6 have been
fixed in https://gerrit.khronos.org/c/vk-gl-cts/+/12272.
Remove the test suppression from the expectation files.
Bug: b/295394803
Bug: angleproject:8214
Change-Id: I2d99f9ed282eba43dc9c18e4427f5abd5014224e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4908191
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
1cab871c
|
2023-09-27T22:11:25
|
|
GL: Fix ScalarizeVecAndMatConstructorArgs vs precision
If the constructor being expanded has no precision (such as if it's
entirely made up of constants and bools), the workaround didn't produce
a precision for the helper function, leading to GLES compilation errors.
Bug: chromium:1420130
Bug: angleproject:8361
Change-Id: I0de312dfd1bfbf45317db4fb88d685a843052817
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4898697
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
49c4d87a
|
2023-08-21T00:00:00
|
|
Apply fragment color broadcasting to secondary outputs
When GL_EXT_draw_buffers is enabled,
gl_FragColor is replaced with gl_FragData.
Apply the same transformation to gl_SecondaryFragColorEXT
if it is statically used to avoid compiler failures.
Bug: angleproject:1085
Change-Id: If154cd20a8e14a92da520847a9c4508971a45fef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4900641
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
7f5b5f74
|
2023-09-19T07:35:16
|
|
Tests: Add Batman: The Telltale Series trace
Test: angle_trace_tests --gtest_filter="*batman_telltale*"
Bug: b/301024256
Change-Id: Ice5aa3ed093901c04486fca64121592eb8805f93
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4883428
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
6b0ddce0
|
2023-09-22T13:13:38
|
|
Backends need to handle invalid render area during a clear
1. Frontend no longer noops empty scissors during clear
2. FramebufferVk is updated to handle invalid render area by restaging
deferred clears in clearImpl(...) if render area is invalid
Bug: angleproject:8348
Tests: EGLSurfaceTest*WindowThenScissoredClear*
Change-Id: Iec51914a083a59bad7f939798c932dffada56a6c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4867641
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
9fc3baf5
|
2023-07-26T10:29:13
|
|
Add the missing GraphicsPipelineDesc legacy dither bit update
When the app calls glEnable(GL_DITHER) or glDisable(GL_DITHER),
we need to update the legacy dither bit of the renderpass that
belongs to ContextVk::mGraphicsPipelineDesc. If not, there is a
change that the graphics pipeline will be created with a
renderpass that has outdated legacy dither bit. This results
the dither being applied to the render results incorrectly:
e.g. the app calls glDisable(GL_DITHER),
but the render results have dithering applied.
Bug: b/286921997
Bug: b/292282210
Bug: b/293349058
Bug: b/284462263
Change-Id: Ie24b95898526c9021be6e3cb7620e4050f9faaaf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4722446
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
e1d2e88a
|
2023-09-20T11:53:15
|
|
Check pending garbage after some buffer releases
* Embedded BufferHelper::releaseBufferAndDescriptorSetCache() inside
a new ContextVk method: releaseBufferAllocation()
* After releasing the buffer, there is a check for excess pending
garbage. If the tracked pending garbage size is larger than the
threshold, the context will be flushed.
* Unskipped the test "BufferDataInLoopManyTimes", which was failing
on Android devices.
Bug: b/280304441
Change-Id: Ib34319f3291dd2200fc1a92e30645f9d1da8e2b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4879086
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a1e3abc0
|
2023-09-22T10:14:43
|
|
Add ES2 support for copying GL_SRGB8_ALPHA8 to GL_RGBA8
Bug: angleproject:7907
Change-Id: I02ae9785ea1f942e85983c18155cfd75ec39b5c2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4887271
Commit-Queue: ccameron chromium <ccameron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7b1b8a01
|
2023-09-21T20:15:29
|
|
Metal: Allow using GL_RGB with either RGBA/BGRA IOSurface.
Previously we only allowed GL_RGB internal format to be used with BGRA
IOSurface and GL_RGBX8_ANGLE to be used with RGBA IOSurface
respectively.
However, there are currently many places in Chrome prefer GL_RGB to be
able to be used with both RGBA and BGRA IOSurface.
This CL allows such combinations. Instead of deducing angle::FormatID of
the IOSurface pbuffer based on the input GL internal format & type, we
will take into account the pixel format of the IOSurface as well.
For example, when we call eglCreatePbufferFromClientBuffer with GL_RGB
internal format attribute:
- if IOSurface's pixel format is 'RGBA' ->
deduced angle::FormatID is R8G8B8A8_UNORM.
- if IOSurface's pixel format is 'BGRA' ->
deduced angle::FormatID is B8G8R8A8_UNORM.
This CL also removes GL_RGBX8_ANGLE support from Metal backend. Because
there are many places in Chrome that use this format enum for both RGBA
& BGRA IOSurface when the extension is available. It's redundant to
support that since GL_RGB already covers most of the required cases.
Bug: angleproject:8350
Change-Id: I5a121a97e031a42d0779721d4348f373dfaee9a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4881742
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
|
|
120e90eb
|
2023-09-08T11:23:11
|
|
Add test for copying GL_SRGB8_ALPHA8 to GL_RGBA8
The pixel values should be the same (no conversion should happen).
Include sub-tests with and without alpha premultiplication.
Bug: angleproject:7907
Change-Id: I2e3d657d5b8513cd06df357e84027572ebce03ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4852258
Commit-Queue: ccameron chromium <ccameron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f5842350
|
2023-08-21T00:00:00
|
|
Vulkan: Flatten secondary fragment output arrays
Added a SPIR-V transformation that makes them private
and copies their values into regular fragment outputs.
Fixed: angleproject:8336
Change-Id: Ide62dd183426e0de70fd4ac6d2b8c6a4b4b33994
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4875327
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
bfae8072
|
2023-09-20T06:48:06
|
|
Metal: Support RGBA IOSurface pbuffer.
Currently only BGRA IOSurface is supported by ANGLE.
This CL adds RGBA IOSurface support to Metal backend.
- Added GL_RGBX8_ANGLE & GL_UNSIGNED_BYTE attributes combo to specify
that the IOSurface is RGBX. Only supported on Metal backend for now.
- Added GL_RGBA & GL_UNSIGNED_BYTE combo to specify that the IOSurface
is RGBA. Only supported on Metal backend for now.
Bug: angleproject:8350
Change-Id: I0e05762870c9c034bca78e8989aedf346406df57
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4874484
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
ae9c7857
|
2023-09-19T13:40:52
|
|
Suppress BufferDataInLoopManyTimes for Linux/Intel
* Skipped BufferDataInLoopManyTimes for Linux/Intel due to the long
execution time, suspected to be causing errors on the bots.
Bug: angleproject:8351
Change-Id: Ib7b640800edf5b30e251b47cfabfd34cc1ecea28
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4877693
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
ecf11eca
|
2023-09-19T15:18:04
|
|
Add ContextMutex unit tests
Test: angle_unittests --gtest_filter=ContextMutex*
Bug: angleproject:8226
Change-Id: I55b69ce8bb89d572a2bf5d28f428635505771fa1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4874388
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
eb0d5997
|
2023-09-15T16:41:13
|
|
Move set/get uniform machinery to ProgramExecutable
This is done because some uniforms are internally added by the compiler
(draw ID, base vertex, and base instance) and are automatically set **on
the installed executable**.
This change fixes scenarios where a draw is done after a program has
failed a relink, and therefore is unable to correctly set the uniforms
(as it does not have access to the executable that is installed).
It also fixes draws that use those uniforms in a PPO.
Bug: angleproject:8297
Change-Id: Id74b4984b88aa09b5b81be1c91412d6c91711136
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4864693
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a1f52f1b
|
2023-09-07T14:44:24
|
|
Vulkan: Flush pending image garbage more often
* Added a counter to the context object to keep track of the size of
the pending image garbage: mEstimatedPendingImageGarbageSize.
* Modified hasExcessPendingGarbage() to use the sum of the size of
the image and and suballocation garbage.
* RendererVk::calculatePendingGarbageSizeLimit() provides the limit.
* Currently the limit is based on the available heap sizes. It will
use a fraction of the largest memory heap size.
* The portion is currently kGarbageSizeLimitCoefficient = 0.2f.
* Unskipped the test "TextureDataInLoopManyTimes", which was failing
on Android devices.
Bug: b/280304441
Change-Id: Ibcced1d118ea8a1f347028b62d29cfbd9e38e8c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851252
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
1b450b92
|
2023-09-15T11:07:25
|
|
Vulkan: Fix buffer storage reuse bug when robustAccess is enabled
There is an optimization in vulkan backend that when the bufferData is
called and current storage size is big enough for new bufferData call,
we just reuse the storage. Mean while, when hasRobustAccess() is true,
we must use the VkBuffer with the exact user size that glBufferData call
provides so that driver can set proper access boundary. In order to
satisfy both requirement, if robust resource access is enabled, we
create a separate VkBuffer with the exact user provided size but bind to
the same memory. There is a bug here that if robustAccess is true, this
buffer of user provided size is not been recreated when storage is
reused but with different user size (both has same allocation size).
This causes we keep using the smaller VkBuffer and subsequently causes
missing triangles. This CL clears mBufferWithUserSize when size changes
and storage is reused.
The other bug here is that previously we are checking
isRobustResourceInitEnabled, which is incorrect. We should check
hasRobustAccess. This appears works for chrome possibly due to both are
enabled. This CL switches it to check hasRobustAccess.
This CL also renames mBufferForVertexArray to mBufferWithUserSize to
reflect what its true meaning.
Bug: chromium:1476475
Change-Id: I843cc3a705f8a582a97bc0307f03aa1eb9fad3ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4864003
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
503c0db1
|
2023-09-12T18:01:23
|
|
Add the missing multisample and rgb565-no-depth-no-stencil tests.
We need different --deqp-gl-config-name values
for different test applications, to create RenderTarget
with different properties needed for different test
applications, such as multisample, rgb formats.
This CL adds an array of
vector<const char*> gTestSuiteConfigParameters
to store the --deqp-gl-config-name
values for different test applications. Each element
in this array can hold multiple const char* values.
In the upcoming CLs, we can add more customized config
values for each test applications, such as
--deqp-screen-rotation for angle_deqp_gles*rotate*tests.
Rename the gEGLConfigName to gEGLConfigNameFromCmdLine.
The default value for gEGLConfigNameFromCmdLine is empty
string, and its value can be overwritten by specifying
--deqp-gl-config-name when running the tests from command
line. If we pass --deqp-gl-config-name from command line,
then use the value passed from the command line to replace
the values in gTestSuiteConfigParameters.
Bug: b/297901032
Change-Id: Ibf8762c55d7d0cdf7bcf33f384568587023b369c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851048
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
f1345d1c
|
2023-08-02T14:23:59
|
|
Call ReleaseThread() entry point from ThreadCleanupCallback
Change relevant only for the Android platform.
Fixes problems:
1. Current code calls `thread->setCurrent(nullptr)` in
`Display::threadCleanup()` method, while not executing other code
that will actually unmake Context from current. This will affect
following EGL calls from the application's side in its own thread
cleanup callback. For example, calls to `eglMakeCurrent()` (to unmake
from current) or `eglReleaseThread()` will be no-op. This may lead to
memory leak if context was previously marked for destruction.
2. The `Display::threadCleanup()` did not also clears
the `CurrentValidContext`. This may cause crashes or other UB if an
application will call some GLES API in its thread termination
callback (for example `glFinish()`), if ANGLE already destroyed the
context in its ThreadCleanupCallback (use after delete).
3. Context will remain current to a thread that terminated. Current
implementation of GLES drivers on Mali/Adreno GPUs automatically
unmade context from current, so the application may make this context
current to some other thread. ANGLE should mimic this behavior to
avoid possible bugs.
All of the above problems may be fixed by simply calling from the
ThreadCleanupCallback either:
- MakeCurrent(t, d, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)
- ReleaseThread(t)
This CL choose to call `ReleaseThread()` because this is the API that
the application may call in its own thread cleanup callback. And if
application's callback will be called later than ANGLE's callback, then
application's `eglReleaseThread()` call we be a no-op.
Even if the application does not have its own thread cleanup callback
(like most of the applications), there is no harm to call
`ReleaseThread()` anyway. The only difference with `MakeCurrent()` is
that it will also cleanup invalid objects and some other memory
depending on the backend.
This CL naturally replaces existing logic with Display termination when
there is no active threads thanks to the previous CL:
"Perform Display terminate(InternalCleanup) from makeCurrent()".
Bug: angleproject:6723
Bug: angleproject:8283
Test: angle_end2end_tests --gtest_filter=EGLContextSharingTest.ThreadCleanupCallback*
Test: angle_end2end_tests --gtest_filter=EGLContextSharingTest.UnmakeFromCurrentOnThreadExit*
Change-Id: I8c5b31f34f91c4bfdac165ac30c213ff5fef992e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4742383
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
c38f3374
|
2023-09-15T19:22:44
|
|
Fix "win-asan-test" random failures and timeouts
While exact reason for the failures is unknown, it seems like disabling
Vulkan Loader DLL unloading fixes the problem. More details in the issue
8347.
This CL also sets the variable on the Linux platform, because it does
not hurt and will probably help with similar issues.
Bug: angleproject:8347
Change-Id: I398d55a7c13f1ce6790988983fdf8fee7cc5776c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4868220
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
22b6ca1c
|
2023-08-21T00:00:00
|
|
Remove obsolete EXT_blend_func_extended expectations
Bug: angleproject:5981
Bug: angleproject:6585
Bug: angleproject:7177
Change-Id: I25da401f03ff0bfa7a77c3ce7a3fecd0a119d6a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4870916
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9d99f85f
|
2023-09-14T15:01:14
|
|
Add multithreaded texture upload test
Bug: angleproject:8341
Change-Id: I8561a64fb28681509a1d65c490888dfa1a423835
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4864467
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
b2e6a196
|
2023-09-11T15:27:20
|
|
Vulkan: Use VK_EXT_host_image_copy for texture uploads
Of all the scenarios where host image copy may be useful, this is likely
the most common case. There are numerous conditions for when the copy
may be done on the host:
- The image format must support it,
- It must be unused by the GPU,
- It must not have any pending updates (this can potentially be
mitigated if needed), and
- It must be in a host-copyable layout.
However, many texture uploads are done:
- To compressed formats, where support is highly likely,
- On init, where:
- the image is never previously used,
- the image has no previous uploads
- the image is in the UNDEFINED layout
which satisfies the conditions above.
As a result of this change, when the upload is done on the host,
creation of a temp buffer is avoided which greatly reduces memory
pressure (specially during app loading which is when most texture data
is uploaded) and may even improve performance (due to avoiding a double
copy).
Testing the first 3 frames of the following traces with a SwiftShader
implementation shows the amount of buffer allocated for staged uploads
changed as such:
- Black Desert: 185MB -> 65MB
- Genshin Impact: 125MB -> 12MB
- Asphalt 9: 138MB -> 0MB
Bug: angleproject:8341
Change-Id: Id71dcc4a7a0f8b67960d2d283fe9d19ce7429a03
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4856676
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ffd6ec26
|
2023-09-07T15:39:19
|
|
Reland "Make egl surface uncurrent when being destroyed"
This relands commit 497440cdcb7d2ee59bca612dd07fc13cf09a6a57.
This is to workaround errors when app does below behaviors:
1) while there is a context still bound to the current
rendering thread and the surface, call eglDestroySurface()
2) create a new surface eglCreateWindowSurface()
3) call eglMakeCurrent() with the surface created in step 2)
4) does work on the new surface
The old surface won't be destroyed in step 1) because
it was still bound by the context of the current rendering
thread. When creating new surface on step 2), some hardware
will return error code EGL_BAD_ALLOC, because the old egl
surface is still associated with the native window.
To workaround, when destroying surface, if the surface
is still bound by the context of the current rendering
thread, release the context and surface by passing
EGL_NO_CONTEXT and EGL_NO_SURFACE to eglMakeCurrent().
The workaround is controlled by a frontend feature
uncurrentEglSurfaceUponSurfaceDestroy. This feature
is only enabled on vulkan backends.
Bug: b/292285899
Change-Id: Id4c47f1b20e0f90d1013a68893fd70e917c030e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4867066
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
b4852ef9
|
2023-02-08T14:18:06
|
|
Vulkan: Drop support for Vulkan 1.0
Bug: angleproject:7959
Change-Id: Ib673679ea1a503af22b37092dbff1ee1fd34fba6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4233092
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
8a7ad933
|
2023-09-13T15:11:46
|
|
Revert "Make egl surface uncurrent when being destroyed"
This reverts commit 497440cdcb7d2ee59bca612dd07fc13cf09a6a57.
Reason for revert: this caused chromium webview tests failures: https://chromium-review.googlesource.com/c/chromium/src/+/4860891.
Original change's description:
> Make egl surface uncurrent when being destroyed
>
> This is to workaround errors when app does below behaviors:
>
> 1) while there is a context still bound to the current
> rendering thread and the surface, call eglDestroySurface()
> 2) create a new surface eglCreateWindowSurface()
> 3) call eglMakeCurrent() with the surface created in step 2)
> 4) does work on the new surface
>
> The old surface won't be destroyed in step 1) because
> it was still bound by the context of the current rendering
> thread. When creating new surface on step 2), some hardware
> will return error code EGL_BAD_ALLOC, because the old egl
> surface is still associated with the native window.
>
> To workaround, when destroying surface, if the surface
> is still bound by the context of the current rendering
> thread, release the context and surface by passing
> EGL_NO_CONTEXT and EGL_NO_SURFACE to eglMakeCurrent().
>
> The workaround is controlled by a frontend feature
> uncurrentEglSurfaceUponSurfaceDestroy. This feature
> is only enabled on vulkan and gl backends.
>
> Bug: b/292285899
> Change-Id: I872d2e116ba6860f58d1176f011a5ef7c5a5af4e
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851255
> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Bug: b/292285899
Change-Id: I760054d856294e6691e79e165fd73ce9e560621f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4862958
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
e7a77053
|
2023-09-12T13:40:47
|
|
Update VulkanMemoryTest after adding context flush
After adding context flushing to the memory allocation fallbacks
in a previous CL (https://crrev.com/c/4787949), some tests in the
VulkanMemoryTest suite no longer test the success path of the fallback
to wait for submitted commands to finish.
* Updated AllocateVMAImageAfterFreeing2DGarbageWhenDeviceOOM
* The test now uses an additional allocation and draw after the
first sync, followed by a second sync. During the allocation
of the last texture, it would wait to finish the submitted
command and free the garbage without flushing the whole context.
Bug: b/280304441
Change-Id: Idc583e120b8d9e1cc550f6cba4cb0b2b197e4944
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4860367
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
497440cd
|
2023-09-07T15:39:19
|
|
Make egl surface uncurrent when being destroyed
This is to workaround errors when app does below behaviors:
1) while there is a context still bound to the current
rendering thread and the surface, call eglDestroySurface()
2) create a new surface eglCreateWindowSurface()
3) call eglMakeCurrent() with the surface created in step 2)
4) does work on the new surface
The old surface won't be destroyed in step 1) because
it was still bound by the context of the current rendering
thread. When creating new surface on step 2), some hardware
will return error code EGL_BAD_ALLOC, because the old egl
surface is still associated with the native window.
To workaround, when destroying surface, if the surface
is still bound by the context of the current rendering
thread, release the context and surface by passing
EGL_NO_CONTEXT and EGL_NO_SURFACE to eglMakeCurrent().
The workaround is controlled by a frontend feature
uncurrentEglSurfaceUponSurfaceDestroy. This feature
is only enabled on vulkan and gl backends.
Bug: b/292285899
Change-Id: I872d2e116ba6860f58d1176f011a5ef7c5a5af4e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851255
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
e7418836
|
2023-08-16T14:25:52
|
|
Vulkan: Add context flushing as OOM fallback
* As a new fallback for out-of-memory errors, if an allocation results
in device OOM, the context is flushed and the allocation is retried.
* Functions related to buffer/image allocations now return a VkResult
value instead of angle::Result, which will be bubbled up to a higher
level for safer handling.
* The OOM is no longer handled at the level where the allocation
happens, but is moved up to the context.
* Added two functions to ContextVk for allocating memory for images and
buffer suballocations, which also include the fallback options.
* initBufferAllocation(): Uses BufferHelper::initSuballocation()
* initImageAllocation(): Uses ImageHelper::initMemory()
* Moved initNonZeroMemory() out of the following functions:
* BufferHelper::initSuballocation()
* Moved to ContextVk::initBufferAllocation().
* ImageHelper::initMemory()
* Moved to ContextVk::initImageAllocation().
* Also moved to new function:
ImageHelper::initMemoryAndNonZeroFillIfNeeded().
This function replaced the rest of initMemory() usages outside
initImageAllocation().
* New macros for memory allocation
* VK_RESULT_TRY()
* If the output of the command inside it is not VK_SUCCESS, it will
return with the error result from the command.
* VK_RESULT_CHECK()
* If the output of the command inside it is not VK_SUCCESS, it will
return with the input error.
* Added a test in which allocation would fail due to too much pending
garbage without the fix on some platforms. The test ends once there
has been a submission.
* New suite: UniformBufferMemoryTest
* Added a similar test for flushing texture-related pending garbage.
* New suite: Texture2DMemoryTestES3
Bug: b/280304441
Change-Id: I60248ce39eae80b5a8ffe4723d8a1c5641087f23
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4787949
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2fe7bbae
|
2023-09-07T13:21:29
|
|
Tests: Add Oxenfree trace
Test: angle_trace_tests --gtest_filter=TraceTest.oxenfree
Bug: b/298613720
Change-Id: Ie577dff75faf58ee97c0898a28766e9ed7c87459
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851250
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
ce263437
|
2023-09-11T12:25:28
|
|
Vulkan: Perform CPU wait in clientWait outside the global lock
Leverage UnlockedTailCall and move the CPU side wait
during a clientWait outside of the global mutex lock.
Bug: angleproject:8340
Tests: FenceSyncTest.BasicOperations*
Tests: EGLSyncTest.EglClientWaitSync*
Change-Id: I8c05e62e74cc64d38bf8797d28faaf49135e71fc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851649
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
ee7f6ed5
|
2023-09-07T16:50:54
|
|
Refactor dEQP test classes
Rename dEQP to dEQPTest.
Move the static functions and variables that
are shared between all individual dEQP tests
in the same test suite into the dEQPTestSuiteStat
class.
This new dEQPTestSuiteStat class is responsible
for updating the test counts, succeeded tests,
and failed tests of a test suite. Add a static member
of type dEQPTestSuiteStat to the dEQPTest class,
so that all of the dEQPTest instances shared the
same instance of dEQPTestSuiteStat, and as each dEQPTest
TestBody() executes, it can update the data in the same
dEQPTestSuiteStat.
Each deqp test application will create multiple
dEQPTest instances based tests listed in one of the
mustpass list in gCaseListFiles array. And each
deqp test application will only create one test suite.
This is done through testing::RegisterTest(). The
testSuiteName passed to testing::RegisterTest()
for each dEQP test application remains
the same for all of the dEQP tests created.
This change also replaces the below legacy function
names with the new function names:
SetUpTestCase() --> SetUpTestSuite()
TearDownTestCase() --> TearDownTestSuite()
Bug: b/297901032
Change-Id: I9439d7ac314d70a9a5d9ad72c0a3f58cd11e559b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851047
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
eb5acc3e
|
2023-09-08T15:34:44
|
|
Tests: Add ONE PIECE TREASURE CRUISE trace
Test: angle_trace_tests --gtest_filter="*one_piece_treasure_cruise*"
Bug: b/299681746
Change-Id: I3b5a9de18613df37181feb3c207105dba411d2a7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4854449
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
1249fc1f
|
2023-09-07T14:39:26
|
|
Tests: Support capture_tests on Android and enable on CI
Enables angle_with_capture_by_default = true on Android bots
similarly to Linux and Windows.
Enables the capture test on Pixel 4 and 6 bots (it takes only a few
seconds to run)
Enables support for capture in android_helper in general.
For example, this now works the same way it would on say Linux, but
runs the capture on the device an pulls files to OUT_DIR.
% ANGLE_CAPTURE_LABEL=gacha_club ANGLE_CAPTURE_OUT_DIR=/tmp/capt2 ANGLE_CAPTURE_FRAME_START=16 ANGLE_CAPTURE_FRAME_END=16 out/AndroidPerformance/angle_trace_tests --gtest_filter=TraceTest.gacha_club --use-angle=vulkan --retrace-mode --max-steps-performed=20
For end2end tests it's a bit trickier as we're still using the Chromium
wrappers for e.g. out/AndroidPerformance/angle_end2end_tests - which is
why capture_tests.py is currently using angle_android_test_runner.py
Bug: b/296397568
Change-Id: I2606e74a17c90e381bb49ec8d555a6d24851b4f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4850889
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
a412b149
|
2023-09-07T12:08:40
|
|
Suppress out of bounds on no robust contexts tests
dEQP-EGL.functional.robustness.reset_context.shaders.out_of_bounds_non_robust.reset_status.writes.uniform_block.vertex
failed occasionally due to VVL error.
The test first results in vulkan device lost,
which is an acceptable behavior. When we clean up the
vulkan resources, the VVL is complaning the resources
have not finished execution. However, VVL should check
if the vulkan device is already lost, as there is no way to
finish resource execution when device is lost.
Will remove the test from the skip list when the VVL
issue filed
https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/6310
is resolved.
Bug: b/289544394
Change-Id: Ideb676e6629cc17a4f8101ccc083a331a1d3c864
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851049
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
cdbc45a9
|
2023-09-07T15:45:11
|
|
Tests: capture_tests: remove ANGLE_FEATURE_OVERRIDES_ENABLED
Unnecessary for this test, should only matter for tests involving
serialization etc.
Bug: b/296397568
Change-Id: I1b3e12b11358778cf23dd6d7a5aab69be41c1ab4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4850548
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
9c0748d3
|
2023-08-16T09:15:22
|
|
Capture/Replay: Trim inactive Texture resources
As is done with Shader and Program objects, trim inactive Texture
objects from default trace execution playback and update
CapturedTest with new use cases.
Bug: b/297031925
Change-Id: I734d8f1fa66a24be7790391deaeee24cf570d12a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4802281
Reviewed-by: Roman Lavrov <romanl@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
|
|
06411d16
|
2023-09-06T13:23:34
|
|
GL: Use the executable instead of program
In a few places, the program was still being directly referenced instead
of the executable (in particular when dealing with multiview).
Bug: angleproject:8297
Change-Id: I15d0865bf58376a9f85efeec739dd93b49ceaea7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4846475
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7b0bb0f6
|
2023-09-01T13:52:28
|
|
Properly "install" program executables
According to GL:
- The program has an executable
- The executable is overwritten during link.
- After a failed link, queries of the executable may return
half-linked information
- On glUseProgram, the executable is installed in the context
- On glUseProgramStages, the executable is installed in the program
pipeline
- After a successful link, the executable is updated wherever the
previous executable of the program was installed.
This change implements exactly the above:
- The program's and the program pipeline's executables are now
shared_ptr. References to an executable in the context and PPO are
also through a shared_ptr. Installing an executable thus translates
to sharing the executable.
- The context and PPOs are made to not reference the program directly,
but work solely through the executable. As a result, the program is
free to create a new executable for link.
With this change, the link job will be free to modify the executable as
necessary because that will not be accessed until the link is done.
Note that previous changes made the backend executable accessed through
the frontend one, and moved all link results to the frontend and backend
executables as appropriate.
Bug: angleproject:6358
Bug: angleproject:8297
Change-Id: Ie636b23ff7420ad284d18b525ec4f5fb559dd9d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4823089
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
dcd62fc4
|
2023-08-31T15:35:39
|
|
Trace perf: clear blob cache before each test
Cache eviction can happen during warmup causing cache misses
while testing. Significant cycles are being spent evicting cache entries
and throwing off power measurement. Since this is already a synthetic
environment where we're lumping in a bunch of caches together,
clear it between tests so that warmup correctly populates
and no cache misses occur within the test run.
If we clear the cache before warmup and everything fits, no eviction
happens and we hit the cache every time post-warmup. This also improves
reproducibility of perf results as they no longer depend on the
specific cache state before running a particular test, the order in
which tests are run etc.
Also fixes acessing unset var when running without --power.
Bug: b/298028816
Change-Id: I704073f70d8859e19a78b23d397e68f5836f3bb2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834073
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
9666d4d5
|
2023-09-01T00:00:00
|
|
Disallow dynamic indexing of SecondaryFragData in WebGL 2.0
WebGL 2.0 disallows dynamic indexing
of gl_FragData in ESSL 1.00 shaders.
By extension, this rule should also
apply to gl_SecondaryFragDataEXT.
Bug: angleproject:1085
Change-Id: I5859356f72d25c4ffd1db92466dffc6eeacb6a64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4843628
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
17c4741d
|
2023-09-01T00:00:00
|
|
Metal: Disable blending for masked out attachments
Avoid pipeline failure when the following conditions
are simultaneously true for the same color attachment:
* Dual-source blending is enabled
* All color channels are masked out
* There is no bound fragment output
Bug: angleproject:8015
Change-Id: Ie60f4f6dff5a9023677ea9b581e920b0e1e53532
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4836558
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
ebf1e716
|
2023-08-31T17:19:44
|
|
Cache transform feedback varying names in the executable
Currently, ANGLE actually does a full link of the programs inside PPOs.
This was never the intention of the spec (hence why an explicit link
doesn't exist). During this link operation, the transform feedback
varying names are used, and they are retrieved from the program itself.
This is not correct, because the transform feedback varyings may have
changed, the program may have failed to relink, and the program pipeline
is expected to continue functioning using the "installed" executable.
Bug: angleproject:5486
Bug: angleproject:8297
Change-Id: I583dbd2abcc51e8536b4c460b92211bdddebda16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834055
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4e1053b9
|
2023-09-01T08:35:21
|
|
Tests: Limit CapturedTest to Vulkan backend
Test: angle_end2end_tests --gtest_filter=CapturedTest.MultiFrame
Bug: b/298612441
Change-Id: I865186ba544d3b72af700a9f2cf22aef719e875a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834704
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
18e2038e
|
2023-09-01T12:59:51
|
|
Revert "Gold tests: add temporary logging of angledata hashes"
This reverts commit 4fffc9938375f2b84632eb661fc175457fb2ee77.
Reason for revert: Hashes are ok - http://b/296921272#comment3
Original change's description:
> Gold tests: add temporary logging of angledata hashes
>
> Should allow us to determine whether corruption happens between CAS and
> local files on bots or something's wrong with the test harness.
>
> Bug: angleproject:8307
> Change-Id: I8a599777a38d7a1b5c56143eb8d02829895175a7
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4777836
> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
> Auto-Submit: Roman Lavrov <romanl@google.com>
Bug: angleproject:8307
Change-Id: Idae3bf3bac810af63e44c0c7553e0c6e9bb6af5b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834062
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
9624db05
|
2023-08-21T00:00:00
|
|
Validate missing fragment outputs for dual-source blending
* A secondary fragment output must be declared when
dual-source blending is enabled in WebGL contexts.
* Omitting locations for multiple fragment
outputs is not allowed in WebGL contexts.
Bug: angleproject:1085
Change-Id: I57febdc02c9ccc571971a81b6671869f19b0aa96
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834672
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
7c3c7b7b
|
2023-08-29T16:40:50
|
|
Add more test for GL_SRGB8 format
And follow up changes from crrev.com/c/4819053
Bug: b/298037344
Change-Id: Ib27cc2fb8418d05d0b25f4abbdcf052d1f51c9ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4824046
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
262edacc
|
2023-08-31T18:45:45
|
|
Skip 2 DrawCallPerfBenchmark tests on Pixel 6
angle_perftests.DrawCallPerfBenchmark.Run/gles_offscreen_attrib_change
angle_perftests.DrawCallPerfBenchmark.Run/gles_offscreen_prog_change
Bug: b/298407224
Change-Id: I03e9f5daead86447cea456abc01cb46b229c8bbe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834211
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
6ff209bc
|
2023-08-30T00:02:30
|
|
Clean up InfoLog usage during link
The info log doesn't really belong to ProgramExecutable; it belongs to
ProgramState. However, it is placed there for convenience since many
functions access it.
This change cleans up usage of InfoLog so the one in ProgramExecutable
is consistently used, but also that is turned into a reference to
ProgramState's InfoLog.
This is necessary for a follow up change that restores the previous
executable on link failure (and would thus otherwise lose the info log
of the failing link).
Bug: angleproject:8297
Change-Id: I088408e3fce9ebb35b1ec4ad3dc599bdb90bf5c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4825624
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
d4756a94
|
2023-08-29T15:26:15
|
|
D3D11: Fix register index of read-only storage images
On D3D11 read-only storage images should consume SRV registers ("t")
instead of UAV registers ("u"), so baseUAVRegister shouldn't be
related to read-only storage images.
fixed: angleproject:4404
Bug: angleproject:7121
Change-Id: I3ca35497992de599d0427fae10d750aff7cf7d9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4819797
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ed7e05be
|
2023-08-31T10:44:05
|
|
Cleanup: remove tests.csv
Looks like it was added accidentally in https://crrev.com/c/4189028
Bug: b/242419750
Bug: angleproject:7882
Change-Id: I1d92b4a7001a1418bfea77e2b0945ee7a070dad5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4832095
Auto-Submit: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
33472e77
|
2023-08-30T09:45:43
|
|
D3D11: Fix the compilation of vertex shader with storage image
This patch adds the missing declaration of storage images in vertex
shader. With this patch the vertex shaders with storage image
declarations can be correctly compiled on D3D11 backends.
Bug: angleproject:7121
Change-Id: I32b8c632df83a64a34318e9668e9aa8d376cca56
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4819792
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2ed7d887
|
2023-08-31T09:42:55
|
|
Tests: EGLMakeCurrentPerfTest loads GLES
Following https://crrev.com/c/4812049 which makes warmup call glFinish
that requires GLES to be loaded. It's the only test that hits this -
LoadUtilEGL isn't normally called by tests. Breaks on perf bots.
Bug: b/297418214
Change-Id: Ib6a7eb863f75e6f461ea021d30dc57baf23afbdc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4832092
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1ab5d01d
|
2023-08-29T13:31:07
|
|
Metal: Fix dropped out arguments from functions with many args.
RewriteOutArgs has an early-exit if it spots a potentially aliased
arg. It's also responsible for marking out args as references,
which caused an issue in Google Earth.
Removing the early-exit fixes both issues.
Bug: chromium:1474736
Change-Id: Ib68dd3f3e2e0a1e773e4e09edcdfa3a4bdfc1ef2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4823006
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0d67d1bb
|
2023-08-29T11:19:35
|
|
Vulkan: Support EGL_EXT_gl_colorspace_bt2020
Add support for following 3 BT2020 colorspace extensions
1. EGL_EXT_gl_colorspace_bt2020_hlg
2. EGL_EXT_gl_colorspace_bt2020_linear
3. EGL_EXT_gl_colorspace_bt2020_pq
Bug: angleproject:8330
Tests: EGLSurfaceTest.CreateWithEGLConfig1010102Support*
Change-Id: I3a6ca0daa9ad4400da3834f43678b0db816ba6e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4824045
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
8b0af482
|
2023-08-21T00:00:00
|
|
Validate active draw buffers for dual-source blending
Fail if more than MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT
draw buffers are enabled when dual-source blending
is used.
Drive-by:
Do not invalidate draw state on changing blend
equations if KHR_blend_equation_advanced is
not enabled.
Bug: angleproject:1085
Bug: angleproject:7177
Change-Id: Ieff80ce777c53b1d8183e1d0a52b7d2224347448
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4823164
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
bb135f0e
|
2023-08-24T15:29:11
|
|
Make ProgramExecutableImpl managed by ProgramExecutable
This change allows both parts of the program executable to be safely
backed up and swapped on link.
Bug: angleproject:8297
Change-Id: I17e4b6c05e4e481a66a227d6047dbf943d2c2603
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812138
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d6fd7eaf
|
2023-08-25T16:33:27
|
|
Trace/perf tests: remove calibration and most warmup options
This removes calibration and warmup except for --warmup
(which does what --warmup-steps=-1 used to do: render each frame once
with glFinish)
Trace and perf tests now default to no warmup.
Unchanged by this CL:
--fixed-test-time=x runs a single trial for x seconds.
--fixed-test-time-with-warmup=x is effectively the above flag coupled
with --warmup-steps=-1
--run-to-key-frame runs to the key frame (no longer disables warmup as
it's now off by default)
Bug: b/297418214
Change-Id: I7a0d3e490067dbde57c5f519c1b9092ba70b1480
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812049
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
558df6f1
|
2023-08-21T00:00:00
|
|
Fix fragment output variables validation
* Reject fragment shaders that assign
out-of-range fragment locations
* Reject fragment shaders that assign
output variables of different types
to the same location
* Apply similar validation for fragment
outputs bound via API calls
* Ensure that masks for active output
variables and draw buffer types are
set after processing all fragment
output bindings
Bug: angleproject:1085
Change-Id: If29cbb58be1981279fc97c67739fe4136b0cdc98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4813656
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7e41c5bc
|
2023-08-24T18:30:43
|
|
Remove scripts/perf_test_runner.py and references to it
src/tests/run_perf_tests.py is similar and is maintained (runs on CI)
Bug: b/297418214
Change-Id: I6fb12ac1fb856672b3bb83c0a4e34eb68afa1475
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4812135
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
571b4cdb
|
2023-08-14T16:55:28
|
|
Vulkan: Move pipeline/desc-set layout creation to link job
The pipeline and desc-set layout caches are consequently made
thread-safe. The reference counter on the layouts are also made atomic.
With this change, practically all of the link in the Vulkan backend is
moved to the link job.
Bug: angleproject:8297
Change-Id: Iba694ece5fc5510d34cce2c34441ae08ca5bb646
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4774787
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
98e351cf
|
2023-08-16T15:22:37
|
|
Traces: Update steps for upgrading traces
We've settled on a streamlined method of upgrading traces.
We consider the upgraded trace good if:
- gets the same pixels for all frames, including after Reset
- gets the same frame time and memory usage (or better)
This moves away from using serialization, which is useful, but has
become too heavyweight. We've preserved the steps as they are
still useful in some scenarios.
Also formalize a couple of scripts we've been using to compare
trace screenshots.
It supports two scenarios:
- comparing screenshots between ANGLE and native
- verifying screenshots after an upgrade
Example usages:
compare_trace_screenshots.py versus_upgrade \
--before <path> --after <path> --outdir <path>
compare_trace_screenshots.py versus_native \
--screenshot-dir /tmp/screenshots
--trace-list-path src/tests/restricted_traces
Bug: b/294882956
Change-Id: Ifc59d8b31648abb3614da2d8919a1f90a0b6b68f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791916
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
893325b8
|
2023-08-24T10:03:51
|
|
Perf tests: call base class SetUp in all tests
https://crrev.com/c/4799388 moved code to SetUp assuming base class
SetUp was always called but a few cases were missing this.
Changes ASSERT to a check that is enabled in release builds (e.g. perf
bots)
Bug: b/291604008
Change-Id: I1c3fb123903f09631ef348e311f3dc1c77b4e221
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4810187
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f0d3e8b3
|
2023-08-22T14:25:43
|
|
Remove test skips on dEQP-EGL.functional.swap_buffers*
Below changes fixed dEQP-EGL.functional.swap_buffers*
on pixel devices, too:
https://chromium-review.googlesource.com/c/angle/angle/+/4794979.
Update the tests to only skip on Win OS.
The tests running on other platforms will be
reported as Not Supported due to lack of readScreenPixels()
implementation on other platforms.
Tests failures on Win OS needs further investigations.
Bug: angleproject:2341
Bug: b/224537784
Change-Id: I46a59dd8708e621b2d91ac3c46584bdad4ff759e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4804568
Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
68f2c10c
|
2023-08-15T22:47:32
|
|
Remove program executable backup during link
This was added in
https://chromium-review.googlesource.com/c/angle/angle/+/2181450/30 to
support the case where a program fails to relink, but needs to still be
usable.
However, this does not seem to be an issue anymore. New tests are
specifically added for this, and they, along with every other test,
pass.
If this needs to be reintroduced, it needs to be rethought. It does not
play well with parallel link as it changes the executable pointer while
link is in progress (and it was done on the assumption that everything
needing the executable is linked serially). A better solution would
likely be an `mLastSuccessfullyLinkedExecutable` that normally points to
`mExecutable`, but not during link. On `resolveLink`, it would either
make `mExecutable` point back to `mLastSuccessfullyLinkedExecutable`, or
the other way around based on whether the link was successful or not.
Bug: angleproject:8297
Change-Id: Ic9d55bccb75fff0253fe299a244bf1e4bbc416a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4781632
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
b0777def
|
2023-08-21T13:54:08
|
|
Traces: Upgrade octopath_traveler
Test: angle_trace_tests --gtest_filter=TraceTest.octopath_traveler
Bug: b/294882956
Change-Id: I690f4f6ad65542cd015ce61ee246f009f0907740
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794728
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
|
|
865eceaa
|
2023-08-21T15:17:02
|
|
Trace perf: power metric uWs/frame -> W, exclude startup&teard
Switching from uWs/frame to W, which is easier to measure as we don't
need to know how many frames were rendered between the measurements and
just need to avoid warmup, turndown. Also, W is a more "natural" metric
as it reports actual power usage that can be reasoned about in terms of
device thermals etc.
Changing starting point to post-warmup by waiting for test message in
logcat. The logcat -> script delay seems very small in my tests.
Turndown also shows spikes in some traces so avoiding that by shifting
the time for end point collection to 1s before the test is expected to
finish (which makes this only compatible with --fixedtime)
Also made device selection set env var instead of a global variable and
passing via args it slighlty simplifies subprocess(adb) handling.
Bug: b/291604008
Change-Id: I2109da0d75eba167eec939df88a34d9a9b7f330b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4799391
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
72c00885
|
2023-08-23T08:00:03
|
|
Tests: Skip injustice_2 on Windows/Nvidia
Bug: angleproject:8316
Change-Id: I5bdef9df9bc6f922a15f3377e4af31cc60db73a3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4807130
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9f258f8a
|
2023-08-21T00:00:00
|
|
GL: Add disableRenderSnorm workaround
Disable the extension on Mesa versions that
clamp negative snorm values to zero on read.
Fixed: angleproject:8315
Change-Id: I5459db40cb08c546fba15f5e6d70578029a8218a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4804324
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
0ef565c5
|
2023-08-22T17:50:36
|
|
end2end test with --use-gl fails with a note
Bug: None
Change-Id: I7e6e40c912910d0ffc8d4690e9b9b4c8599342db
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4804368
Auto-Submit: Roman Lavrov <romanl@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
d41ac4da
|
2023-08-18T11:25:05
|
|
Cleanup: 'am instrument' readability and consistency
Reconcile android_helper and restricted_trace_perf formatting of
'am instrument' command. The only real difference is that
restricted_trace_perf uses 'shell=True' in subprocess which requires
escaping spaces inside ""
Bug: b/292249127
Change-Id: I002e49ae5b2913db46b92a7b643bc12d21abce1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794430
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
84576a5b
|
2023-08-18T12:08:04
|
|
Trace perf: log script args in the spreadsheet
Excludes the --output-tag flag
Example:
...
Source: raw_data.android.20230818.csv
Args: -f *blade_and_soul_revolution --fixedtime 1 --power --loop-count 2 --sleep 1
Bug: b/292249127
Change-Id: Ic40666921fe49845032d47f32ecda9609ba7b044
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794431
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
9e2d4c0b
|
2023-08-18T10:25:48
|
|
Trace perf: add test crash handling
When missing time and no '[ PASSED ]' tag in stdout,
assume test crashed.
Example stdout:
trace wall_time gpu_time ...
Starting run 1 with native at 2023-08-18 10:23:17
native_blade_and_soul_revolution crashed 0 ...
raw_data:
trace,wall_time(ms),gpu_time(ms),...
native_blade_and_soul_revolution,crashed,0,...
summary:
1,blade_and_soul_revolution,-1.000,-0.00%,-1.000,...
Set cpu_time to 0 on a crash for consistency with other metrics.
Bug: b/292249127
Change-Id: I9533c0ee7aa9a3b45f360ad1618984eb620d657f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794428
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
864de574
|
2023-08-18T09:49:30
|
|
Trace perf: subprocess.wait() -> subprocess.communicate()
subprocess.wait() deadlocks when enough output is produced by the
command to fill the stdout/stderr buffers.
https://docs.python.org/3/library/subprocess.html#subprocess.Popen.wait
recommends .communicate() instead.
Replaced result.process.stdout with result.stdout which is a string
rather than a stream.
Bug: b/292249127
Change-Id: I172ac058ebc6aafda82edab7c45787252d612013
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794288
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
823de3a3
|
2023-08-22T07:40:39
|
|
Tests: Add Injustice 2 trace
Test: angle_trace_tests --gtest_filter=TraceTest.injustice_2
Bug: b/296913308
Change-Id: I35f1e17767f924c4f31d4e00a2c9f737c6c4822b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4802266
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
f3c1de36
|
2023-08-17T15:29:24
|
|
Make shader recompile while parallel linking safe
Prior to this change, Program* objects held references to Shader*
objects. This poses a problem where a shader recompile can race with a
program link, if the program link is done in parallel.
As a result, a good chunk of the link job is done serially and under the
share group lock. After this change, that is no longer a problem, and
most of the link can be made lockless/parallelized.
This change separates out the "compiled state" from the rest of the
shader state. This was already done for the front-end state (for the
sake of caching), but is also now done for the backends that need it.
The compiled state in turn is placed in a shared_ptr, and is shared with
the program. When a shader is compiled, its own shared_ptr is replaced
with a new object, leaving all programs currently compiling unaffected
and using the previous compilation results.
Once a program is linked, its references to compiled shader states is
updated.
Bug: angleproject:8297
Change-Id: Iff7094a37088fbad99c6241f1c48b0bd4c820eb2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4791065
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
1bd45c4f
|
2023-07-17T14:18:53
|
|
Add tiling mode for GL_EXT_memory_objects
Add set and get TexParameter for pName GL_TEXTURE_TILING_EXT
Add test case to VulkanImageTest for import LINEAR memory object
Bug: angleproject:8274
Change-Id: I4432093e41f45e3926a27e3dee00d48c0438cae5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4752793
Reviewed-by: Jeff Vigil <j.vigil@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
|
|
d0730eba
|
2023-08-18T14:41:03
|
|
Disable NativeWindow screen read capability on non-win32 platform
NativeWindow::readScreenPixels() only returns true
on win32 platform.
Enable CAPABILITY_READ_SCREEN_PIXELS on DE_OS_WIN32
only.
Bug: b/296487949
Bug: angleproject:8261
Change-Id: I964870a3a5c6911a16382e2b9bb9d2cecea2b706
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794979
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
280e79e1
|
2023-08-10T14:08:00
|
|
Rescope globals only used in one function to function-local.
We can demote global variables when they are only used in one function.
This has performance implications on Metal.
Bug: angleproject:8311
Change-Id: Id666e6b167be771c14768cd73efa61fdacd897d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4771215
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
71c90dfd
|
2023-08-18T21:50:22
|
|
gtest: disable legacy test case API
Remove APIs that upstream has deprecated so we make sure no one uses
them anymore in new tests.
Bug: chromium:1474588
Change-Id: Ic760439ec41131a5bb5a30a59e23b9166c7fd23d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794112
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Mike Frysinger <vapier@chromium.org>
|