src/tests


Log

Author Commit Date CI Message
Alexey Knyazev afc1e5dc 2023-03-27T00:00:00 GL: Support OES_sample_variables Bug: angleproject:8097 Change-Id: I983d6e83fe9ca942c91cbdf7274b46306e38f11f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368476 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Cody Northrop 249b03ac 2023-03-24T15:11:10 restricted_trace_perf: Delete settings when using default Follow up to the addition of `--renderer default`, actively delete the settings if default is chosen. Otherwise the script will just use whatever settings you already have. Test: restricted_trace_perf.py Bug: b/269645211 Change-Id: I83be7e3f7fa2f2a2bc9f9d243820b49a3cdbed82 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368874 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Cody Northrop 2bd8acfe 2023-03-23T18:24:43 Tests: Add Geometry Dash trace Test: angle_trace_tests --gtest_filter="*geometry_dash*" Bug: b/271876646 Change-Id: I18ab2f22230f0c63d3aaf7c825c9cc55d896d4d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368019 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Amirali Abdolrashidi dae99340 2023-03-23T14:36:28 Remove uninited pixel check from TexStorageWithPBO Towards the end of the test "TexStorageWithPBO" from Texture2DTest, the color of the pixel outside the red square is checked to confirm that it is black. However, due to that part being uninitialized in the test, its color could be left over from a prior test, causing a failure. * Removed the pixel check for outside the square. * Updated the color check for the square to cover its whole area. Bug: angleproject:4126 Bug: angleproject:5081 Bug: angleproject:5097 Bug: angleproject:5651 Bug: angleproject:8093 Change-Id: I3ceb8cf30456f51a60630f9e258210a8ccae0d95 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4367898 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi f2c5ce4e 2023-03-16T17:44:56 Re-enable mutable texture upload for one context It was observed that in some apps, mutable textures are uploaded in a context, but that context's outside RP command buffer is not flushed at all, resulting in invalid (noise) or incorrect textures. * Added isEligibleForMutableTextureFlush() to be used to determine whether onMutableTextureUpload() should be called. * Restricted the use of mutable texture upload to single-context share groups. * When the number of contexts becomes greater than one, the original context's outside render pass command buffer is flushed. * Added related tests. * Added a test to make sure that textures can be uploaded in one thread, and used for draw calls in another, with the help of a sync object. * Added a test to make sure that textures can be uploaded in the main thread, and used in a new thread. * Added a test in which a new context is created after mutable mipmap textures are defined. Bug: b/264143971 Change-Id: I66c0d8b04d39bb7244e5752aac0e46a0192f012e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4349156 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuly Novikov 34a06e25 2023-03-15T18:46:55 Start MacBook Pro AMD 2019 experiment on ANGLE bots Suppress failing tests Bug: chromium:1382149, angleproject:8091 Change-Id: I817d3db8badc35a12ecc9650750ca9190c617f6c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4341695 Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuly Novikov 74edb4b4 2023-03-22T18:38:38 Skip PixelLocalStorageTest.Interrupt on iOS Metal Bug: angleproject:7994, chromium:1421437 Change-Id: Ib6a8b316212510f73f56ef9e56c8d2da2fe07cfc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4359704 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Alexey Knyazev ad52f12e 2023-03-21T00:00:00 Implement EXT_conservative_depth Added translator frontend and GLSL backend support for gl_FragDepth redeclaration and layout qualifiers. Added mappings to DepthGreater, DepthLess, and DepthUnchanged SPIR-V execution modes. Bug: angleproject:8046 Change-Id: I23f19ff54380741107970a44055ea269eef179f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4355028 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop ec9595f1 2023-03-21T10:02:00 restricted_trace_perf: Run against default driver On newer Android versions where ANGLE can be the default driver, selecting "native" as the driver will always seek out the system driver instead of the default driver. To allow the platform to select the GLES driver, add a "default" mode that does not use any Android settings for driver selection. To use, pass `--renderer default` Test: restricted_trace_perf.py Bug: b/269645211 Change-Id: Ie9bf64eaa823d9d54301472c1d4e48bf2f5482cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4358331 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Chris Dalton a491bbe3 2023-03-18T19:05:08 Add PLS utilities for interrupting a rendering pass Adds two more simple commands to ANGLE_shader_pixel_local_storage that allow WebGL and the command buffer to interrupt rendering passes without having to either (1) make expensive queries, or (2) track lots of complex state for validation that they are not currently equipped to track. Bug: chromium:1421437 Change-Id: I80eaef3ae6b0b4bbbecb9cd2268ac90b43675d1c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4355032 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Alexey Knyazev ba845fcf 2023-03-20T00:00:00 Metal: Implement EXT_clip_control * Skipped vertex shader depth correction when clip depth mode is set to GL_ZERO_TO_ONE. * Adjusted front face mode and pre-fragment vertical flip driver uniform based on the clip origin state. * Added more clip control end2end tests. * D3D11: Fixed scissored draws with upper-left clip origin. Fixed: angleproject:8065 Change-Id: Ife82fa2ad39fad463c23ec10b49bff409272ebf2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4356661 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Alexey Knyazev f5695244 2023-03-21T00:00:00 Fix sample qualifier validation * `smooth sample` is the same as `sample` * `flat sample` is the same as `flat` Bug: angleproject:3589 Change-Id: I8615fa73f4b0cea729b8e09d86f1b8183669de2b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4356666 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gert Wollny 0cb6697a 2023-03-09T10:35:04 Capture/restricted_traces: update documentation With the new context handling the trace files are named differently, and the description how to remove secondary contexts also is out of date. Bug: None Change-Id: Ia8258502ef53f9d90b742eff01f8125d816ca74e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4323658 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Mike Schuchardt d7201a0f 2023-03-20T11:22:22 Tests: Add New Legend of the Condor Heroes trace Test: angle_trace_tests --gtest_filter=TraceTest.new_legend_of_the_condor_heroes Bug: b/274401318 Change-Id: If910e5d3215bfebf8a2779313f709a18a1f58caa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4355351 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mike Schuchardt <mikes@lunarg.com>
Yuly Novikov bacc066b 2023-03-20T17:01:03 Unskip dEQP-EGL tests dEQP-EGL.functional.image.api.create_image_gles2_android_native_* on Mac Bug: chromium:1347817 Change-Id: Iea7a2a05ec32eec8f86f9d0c02fe9e8a43d1922b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4352891 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Alexey Knyazev e809e7bd 2023-03-13T00:00:00 Reland "Implement EXT_depth_clamp" This is a reland of commit f8c1418319ac2aef4b3101e322005b1d0f73120f Host GPU bugs are observable in iOS Simulator Original change's description: > Implement EXT_depth_clamp > > * Added depthClamp to the RasterizerState > * Added DepthWriteTest end2end tests covering > both clipped and clamped depth writes > > Capture > * Updated serialized rasterizer state > * Updated CaptureMidExecutionSetup > > OpenGL > * Requires GL 3.2 or ARB_depth_clamp > on desktop contexts > * Maps to EXT_depth_clamp on ES > > D3D11 > * Maps to the opposite of > D3D11_RASTERIZER_DESC.DepthClipEnable > * The new tests uncover several edge cases where > a workaround is needed to implement unextended > OpenGL semantics on top of D3D > > Metal > * Maps to the setDepthClipMode command > > Bug: angleproject:8047 > Bug: angleproject:8077 > Change-Id: I1b3448e5b84443e4be18af9bc22d2f8495ac8267 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4347753 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Bug: angleproject:8047 Bug: angleproject:8077 Change-Id: I8c5f8304276c97c51b2c3382cd2764592ee0c3fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4349938 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Mohan Maiya 07074968 2023-03-17T19:13:39 Validate gl[Push,Pop]DebugGroup Bug: angleproject:8089 Test: DebugTestES32.DebugGroup* Change-Id: I3a20822a072cea8f4a8a58445917a4ebb86db9da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4350852 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu 4a77b0f5 2023-03-18T00:16:24 Revert "Implement EXT_depth_clamp" This reverts commit f8c1418319ac2aef4b3101e322005b1d0f73120f. Reason for revert: This change breaks angle_end2end_tests on Metal backend: https://ci.chromium.org/ui/p/chromium/builders/ci/ios-angle-intel/26035/overview Original change's description: > Implement EXT_depth_clamp > > * Added depthClamp to the RasterizerState > * Added DepthWriteTest end2end tests covering > both clipped and clamped depth writes > > Capture > * Updated serialized rasterizer state > * Updated CaptureMidExecutionSetup > > OpenGL > * Requires GL 3.2 or ARB_depth_clamp > on desktop contexts > * Maps to EXT_depth_clamp on ES > > D3D11 > * Maps to the opposite of > D3D11_RASTERIZER_DESC.DepthClipEnable > * The new tests uncover several edge cases where > a workaround is needed to implement unextended > OpenGL semantics on top of D3D > > Metal > * Maps to the setDepthClipMode command > > Bug: angleproject:8047 > Bug: angleproject:8077 > Change-Id: I1b3448e5b84443e4be18af9bc22d2f8495ac8267 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4347753 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Bug: angleproject:8047 Bug: angleproject:8077 Change-Id: I829add68c006c72b7b4acf03aee3efa8a9a16fac No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4350876 Reviewed-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Mark Lobodzinski d521ccb3 2023-03-16T15:09:10 Tests: Add Rise Of Empires trace Test: angle_trace_tests --gtest_filter=TraceTest.rise_of_empires bug: b/274049298 Change-Id: I1fc2c177a3901bb9997f532e6d3fa686736eaa94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4350370 Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Yuxin Hu 6ea6b360 2023-03-15T13:49:02 Fix allowed_keywords dEQP test failures Bug: b/272756897 Bug: angleproject:7592 Change-Id: I12f498f4ef0a1fa6da7d45345a4cb9e208bd9f03 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4343518 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Roman Lavrov 50dec716 2023-03-17T11:39:15 Linux skips RegisterContextCompatibilityTests altogether. It is already effectively disabled by skipping all configs but that still makes egl* calls leading to sporadic process corruption due to loading desktop drivers under xvfb. Note that it currently fails to register tests on all platforms as RegisterContextCompatibilityTests is called after TestSuite instantiation which leads to tests not being registered at all. +some cleanups Bug: angleproject:8083 Change-Id: I075dc67b73d627548efb3f80186ec408481e2707 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4348334 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Alexey Knyazev f8c14183 2023-03-13T00:00:00 Implement EXT_depth_clamp * Added depthClamp to the RasterizerState * Added DepthWriteTest end2end tests covering both clipped and clamped depth writes Capture * Updated serialized rasterizer state * Updated CaptureMidExecutionSetup OpenGL * Requires GL 3.2 or ARB_depth_clamp on desktop contexts * Maps to EXT_depth_clamp on ES D3D11 * Maps to the opposite of D3D11_RASTERIZER_DESC.DepthClipEnable * The new tests uncover several edge cases where a workaround is needed to implement unextended OpenGL semantics on top of D3D Metal * Maps to the setDepthClipMode command Bug: angleproject:8047 Bug: angleproject:8077 Change-Id: I1b3448e5b84443e4be18af9bc22d2f8495ac8267 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4347753 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Igor Nazarov 21a3367a 2023-03-17T00:56:18 Tests: Reduce load of computation heavy tests for Swiftshader. Affected tests are very core heavy and may load all CPU cores. LUCI BOT is running multiple tests in parallel. Having such heavy tests increases containment for CPU cores. As result, some tests may take a lot more time to complete and even hit timeout (currently 60 sec). Typical time to complete all tests on the LUCI BOT: With this tests disabled: 295 sec enabled: 475 sec (+180 sec or +61%) Time to complete all tests on the local machine: Normal tests: Tests completed in 173.040861 seconds Tests completed in 184.974704 seconds Tests completed in 171.654014 seconds Reduced load: Tests completed in 127.693891 seconds Tests completed in 125.536354 seconds Tests completed in 128.236671 seconds Disabled tests: Tests completed in 124.614823 seconds Tests completed in 119.456267 seconds Tests completed in 118.890189 seconds This CL instead of disabling, reduces the load for Swiftshader. Bug: chromium:1424783 Bug: angleproject:8039 Change-Id: I44ed6a6c8322033b1d2c3e9e52a06fe1bb74864c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4345872 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao 4982b903 2023-03-14T19:56:51 Revert "Vulkan: Remove inUseAndRespecifiedWithoutData from BufferVk" This reverts commit 755bfe471d23bc2aac5e78493537801dc5f90792. Reason for revert: Causing flaky on pixel 6 angleproject:8082 Original change's description: > Vulkan: Remove inUseAndRespecifiedWithoutData from BufferVk > > BufferVk::setDataWithMemoryType() has one optimization that it tries to > detect glBufferData(target, size, nullptr, usage) and if existing > storage is busy, it immediately reallocate storage. With the > optimization in previous CL (crrev.com/c/4317488), the storage reuse > logic should detect if we can reuse the storage or not. If the size > matches the existing storage's size, then there is no reason we can not > reuse existing storage. Later on when glBufferSubData or > glMapBufferRange is called, there are optimization in those calls that > will detect if we should reallocate storage or not as the further > optimization. This CL removes this check and replies on the other > optimization to handle the storage reallocate (shadowing) if necessary. > This simplifies code and also potentially avoids storage reallocation in > certain usage cases. > > This CL also fixes a test bug in > BufferDataTestES3.BufferDataWithNullFollowedByMap that was calling > glMapBufferRange with MAP_UNSYNCHRONIZED_BIT but incorrectly expecting > GL to do synchronization. > > Bug: b/271915956 > Change-Id: I7901687b3e3e262e77699f14eb8602d8a57eda3e > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4322048 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Charlie Lao <cclao@google.com> > Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Bug: b/271915956 Change-Id: Ie5716b609ab96b96afbe5927f20dfcf2bf5d4db6 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4338263 Auto-Submit: Charlie Lao <cclao@google.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Geoff Lang a8720455 2023-03-10T13:48:03 D3D11: Add logic to disassociate EGL image storages. The TextureStorage classes for External and EGLImages were missing the logic to disassociate from images. This lead to the images continuing to hold references to deleted storages. Bug: chromium:1415330 Change-Id: I8303f6751d87a9b0a52993c7d4e9509b086b93f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4328347 Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Chris Dalton 513ca723 2023-03-13T14:30:20 Delete GL_LOAD_OP_DISABLE_ANGLE from PLS This load op makes the PLS spec and WebGL implementations unnecessarily complex. Bug: chromium:1421437 Change-Id: Iab02a8b02083899c6cc345ecb25b88c5871611c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4335148 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev b26b01a2 2023-03-09T00:00:00 Implement EXT_render_snorm Bug: angleproject:8048 Change-Id: Id01beaea9565f8ab374c732fef70ec0ac0d8743e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4334303 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev bf5e9dbc 2023-03-09T00:00:00 GL: Reset clip origin before scissored clears Clip origin must not affect scissor box but some drivers flip it for clear operations. Added capture/replay support for ClipControl. Bug: angleproject:8066 Change-Id: I9292cb4945b49c56c80da4c5813e89df3453b6b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4328267 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Charlie Lao 755bfe47 2023-03-08T14:31:33 Vulkan: Remove inUseAndRespecifiedWithoutData from BufferVk BufferVk::setDataWithMemoryType() has one optimization that it tries to detect glBufferData(target, size, nullptr, usage) and if existing storage is busy, it immediately reallocate storage. With the optimization in previous CL (crrev.com/c/4317488), the storage reuse logic should detect if we can reuse the storage or not. If the size matches the existing storage's size, then there is no reason we can not reuse existing storage. Later on when glBufferSubData or glMapBufferRange is called, there are optimization in those calls that will detect if we should reallocate storage or not as the further optimization. This CL removes this check and replies on the other optimization to handle the storage reallocate (shadowing) if necessary. This simplifies code and also potentially avoids storage reallocation in certain usage cases. This CL also fixes a test bug in BufferDataTestES3.BufferDataWithNullFollowedByMap that was calling glMapBufferRange with MAP_UNSYNCHRONIZED_BIT but incorrectly expecting GL to do synchronization. Bug: b/271915956 Change-Id: I7901687b3e3e262e77699f14eb8602d8a57eda3e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4322048 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev c3ffae10 2023-03-10T00:00:00 Suppress failing capture/replay test DiscardFramebufferEXTTest.ClearDepthThenDrawWithoutDepthTestThenDiscard fails after DifferentStencilMasksTest.DrawWithSameEffectiveMask Bug: angleproject:8079 Change-Id: I3b1304f465b140a34110b4f3fe95d6e59f0db8e6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4331496 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao d6a25bfa 2023-03-07T15:06:10 Vulkan: Optimize glBufferData call to improve storage reuse If app calls glBufferData with certain size, then calls it again with size 0, and then call it again with same old size again, we should try to reuse the existing storage. When size is zero, with the existing logic, we never free the storage. When glBufferData is called third time with the same size as the first glBufferData call, we expect to reuse the existing storage. But because of the storage reuse logic is comparing buffer's new size to the old size (which is 0), we missed the opportunity to reuse the existing storage. This CL update the reuse logic so that it checks the new size against storage's size (instead of OpenGLES buffer's size) and if we will end up with same sized allocation and same pool and memory type, then we reuse instead of reallocate. This reduces efootball_pes_2021 frame time from 4.670 ms to 4.277 ms on pixel 7 pro. Bug: b/271915956 Change-Id: I6f91e3e85b104eca215b28e7d0bea413ecc4401c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4317488 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 4edccb15 2023-01-17T16:17:35 Vulkan: Fixed Context Priority mixing problems. Problem details: - Each "egl::ContextPriority" may have separate "VkQueue". - "CommandQueue" only has two "PrimaryCommandBuffer"s for normal and protected content. - Commands from multiple "ContextVk" may be written to a single "PrimaryCommandBuffer". - That "PrimaryCommandBuffer" may be randomly submitted to different "VkQueue"s. - As the result - Commands from a single "ContextVk" may be submitted to multiple "VkQueue"s. Fix details: - Created separate "PrimaryCommandBuffer" (lazily allocated) for each "egl::ContextPriority". - Commands with different priorities can't be mixed in a single "PrimaryCommandBuffer". - Therefore - Commands from a single "ContextVk" will be submitted to a single "VkQueue". - No difference for applications that use single "egl::ContextPriority" for all Contexts. Notes: Another problem when resource is used in multiple Contexts with different "VkQueue" (Priority). One solution is to use Semaphores. Another is to enfore same Priority for all Contexts in a Share Group and Default Priority when using EGLImage. This solution was submitted in the previous CL: Vulkan: Enforce ContextPriority in ShareGroup and with EGLImage Below test fails on G996B without this CL. Bug: angleproject:8039 Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.ContextPriorityMixing* Change-Id: Iaa57826ca55956944f922813fcfac42f1a764dbb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4194183 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 233c128b 2023-01-17T19:21:58 Vulkan: Fix UBs when deleted attachment is used in a RenderPass. Problem: - "RenderbufferVk"/"TextureVk" with "mOwnsImage == false" used as RenderPass attachment. - "RenderbufferVk"/"TextureVk" deleted. - Owning resource is destroyed ("EGLImage" and all siblings / "EGLSurface"). - Crash (UB) may happen when ending RenderPass, flushing or executing commands. Fix adds tracking of "vk::ImageSourceID" value in "vk::RenderPassAttachment" - IDs of objects, that originally provide "vk::ImageHelper" images. This is necessary, because when using EGLImage, there may be multiple "TextureVk" objects with same "vk::ImageHelper", and need to call "finalizeImageLayout()" for the correct attachment. Bug: angleproject:8032 Test: angle_end2end_tests --gtest_filter=ImageTest*DeletedWhileInUse* Test: angle_end2end_tests --gtest_filter=PbufferTest.UseAsFramebufferColorThenDestroy* Change-Id: I50fdd9d6b6a9677adad2262373303b46de1dee4c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4296014 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Igor Nazarov b194c21a 2023-02-24T15:41:00 Vulkan: Enforce ContextPriority in ShareGroup and with EGLImage This CL enforces single Context Priority for all Contexts in a Share Group. This is necessary until Vulkan Semaphores will be used to automatically synchronize Resource access between Contexts. Contexts Priority updated when new Contexts is added to the Share Group. New Priority will be the highest among all ever existed Contexts (except if Priority is locked). When Contexts Priority changes, all flushed commands are submitted to the old VkQueue and semaphore is inserted into the new VkQueue. Currently opened RenderPasses and commands will not be flushed. When EGLImage is used in a Context, all Contexts in that Share Group locked (forever) to the Default Priority (Medium). This is done to simplify the implementation and because of the current limitations (lack of mutex protection across Context Share Groups). Notes: - the EGL_CONTEXT_PRIORITY_LEVEL_IMG will report initial priority. - below tests fail on G996B without this CL. Bug: angleproject:8039 Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.RenderThenSampleDifferentContextPriority* Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.RenderThenSampleInNewContextWithDifferentPriority* Test: angle_end2end_tests --gtest_filter=MultithreadingTestES3.RenderThenSampleDifferentContextPriorityUsingEGLImage* Change-Id: Ia6a2f0084d39168a58fd7ec33edc90ece9cead05 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4289750 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Mike Schuchardt 4cbe8548 2023-02-28T21:12:17 Expose shader extensions based on ESSL version Previously, all suported extensions were always exposed in the preprocessor. This broke some games which relied on ESSL1-only extension macros not being defined in ESSL3 shaders. This change adds min/max version information to list of extensions so the preprocessor can conditionally expose extensions based on the shader language version, both via the extension name macros and the #extension directive. Test: angle_unittests --gtest_filter="VersionTest.*" Test: angle_end2end_tests --gtest_filter="*ESSL*ExtensionMacros*" Test: Run com.gameloft.android.ANMP.GloftGGHM on Pixel 6 Bug: b/268091452 Change-Id: I2332a6cb964f54c47d23e2ef6b24e99a0b5c8202 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4304907 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Mike Schuchardt <mikes@lunarg.com>
Chris Dalton b468e4dd 2023-03-08T14:21:47 Add back "non-robust" PLS queries Chrome doesn't have a codegen template for queries that model the "robust" signature, so support both types. Specify that the robust variants are only supported if ANGLE_robust_client_memory is supported, so Chrome and other implementations don't have to support them. Bug: chromium:1421437 Change-Id: Icc69b69ce9ce0a2cfad0dbeed1f3b29bcfa92d20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4321867 Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Chris Dalton f2e13539 2023-03-03T01:57:43 Implicitly enable PLS dependency extensions The ANGLE_shader_pixel_local_storage implementation makes internal use of various other extensions. These extensions must be implicitly enabled when ANGLE_shader_pixel_local_storage is in use. In this CL: * Convert ANGLE_shader_pixel_local_storage and ANGLE_shader_pixel_local_storage_coherent to requestable extensions. * Implicitly enable the dependency extensions, including each other, at the time either of these extensions is enabled. Bug: angleproject:7279 Bug: chromium:1421437 Change-Id: I26acbda776fe7045ea99d4f1e3df445e7a5cfd7f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306526 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Roman Lavrov 9824b4e6 2023-03-09T12:21:34 Skip street_fighter_duel trace on win nvidia. Flaky diffs Bug: angleproject:8074 Change-Id: I2f6f023ade6028e5baf80815e845a7ae5817bfbb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4324720 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 36111b25 2023-03-09T10:48:36 Fix more cases of racy waitForStep usage. Affects: MultithreadingTestES3.Thread* MultithreadingTestES3.UnsynchronizedTextureReads* MultithreadingTestES3.CreateFramebufferFetchBeforeRenderPass MultithreadingTestES3.CreateFramebufferFetchMidRenderPass Bug: angleproject:8071 Change-Id: Id5fe9168fe4d307ec3d3cdd582f3f9ef3f9e9627 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4324717 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov ca2378b7 2023-03-08T18:44:58 Assert that waitForStep steps go in increasing order. This should make race conditions like the one in https://crrev.com/c/4321809 much more obvious from the logs and catch some of the issues when writing or updates tests. The test that has to be updated here is an example why we probably don't want to just replace `== step` with `>= step` Bug: angleproject:8071 Change-Id: I2c740931046bb5a9115474b7d67f76e9a21c30a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4322049 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Dan Glastonbury aa5b97de 2023-03-06T17:59:43 ANGLE_metal_shared_event_sync: Control signaling external events It was assumed that the external MTLSharedEvent passed to eglCreateSync should be signaled by the GL. This change adds EGL_SYNC_METAL_SHARED_EVENT_SIGNALED_ANGLE, which when passed as the value for EGL_SYNC_CONDITION during eglCreateSync, changes the behavior to not insert a fence command into the command stream. Test: angle_end2end_tests --gtest_filter=EGLSyncTestMetalSharedEvent.AngleMetalSharedEventSync_WaitSync_ExternallySignaled Bug: angleproject:8064 Change-Id: Ia1b8615b976f293d411b7d2be506b0ac87d64dee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4307152 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Cody Northrop b78a0c49 2023-03-08T09:49:28 Tests: Add Street Fighter: Duel trace Test: angle_trace_tests --gtest_filter="*street_fighter_duel*" Bug: b/271876811 Change-Id: I9930169c046e9b86bfac0b27c5286e1241e34601 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4320445 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mike Schuchardt f1717ba9 2023-03-08T08:59:25 Tests: Add Merge Dragons trace Test: angle_trace_tests --gtest_filter=TraceTest.merge_dragons Bug: b/272197630 Change-Id: I786ad03bf38b9d3269644bb0038d9848035b0f5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4321866 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mike Schuchardt <mikes@lunarg.com>
Roman Lavrov 2c835845 2023-03-08T16:51:14 Fix race condition in ProgramUseAndDestroyInTwoContexts thread0 and thread1 call threadSynchronization.waitForStep(Step::Start) but then thread0 does threadSynchronization.nextStep(Step::Thread0CreatePrograms); so if thread0 happens to run to this line before thread1 gets to waitForStep(Step::Start), thread1 gets blocked forever Bug: angleproject:8071 Change-Id: Ida4773d5d196f3e64e14689a8f6f16dc9ca3b509 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4321809 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Alexey Knyazev 397f89dc 2023-03-01T00:00:00 Support stencil texturing in WebGL Updated WebGL sampler format validation to support sampling from stencil textures and combined depth/stencil textures in stencil mode. Bug: angleproject:3231 Bug: angleproject:8051 Change-Id: Ib35dfd91f7ce77fc50bd749f49602ffe86837c67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4315864 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Igor Nazarov e6ac77d9 2023-02-27T16:13:29 Tests: Enable RunLockStepThreads OpenGL/GLES backend support. Added "EGL_CONTEXT_VIRTUALIZATION_GROUP_ANGLE" attribute if display has "EGL_ANGLE_context_virtualization" extension enabled. Bug: angleproject:8032 Change-Id: I482475950b9d8d63891c74fc832cc13d93921e21 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4291436 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Igor Nazarov 244e1931 2023-01-17T19:22:10 Vulkan: Fix use of pending Outside RenderPass CommandBuffer. Regression from this commit: 730c127102b540ce2c4ec086b037c8b732706e26 "Vulkan: Submit queue more often for texture data" Bug: angleproject:6354 Test: angle_end2end_tests --gtest_filter=*SubmittingOutsideCommandBufferAssertIsOpen* Change-Id: I5f72f499cd7153c94c8e5f8a3415df2182726c8e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4296802 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Dalton a65f6a9d 2023-03-07T16:11:44 Make PLS queries robust There's no reason not to mirror the ANGLE_robust_client_memory API here. Bug: chromium:1421437 Change-Id: Ifb8b1a9675abe2ceb35272dc905f3c38f29dceda Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4317485 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Mark Lobodzinski 2143c146 2023-03-06T14:38:58 Tests: Add Jackpot World Trace Test: angle_trace_tests --gtest_filter=TraceTest.jackpot_world bug: b/271891383 Change-Id: Ib0ff8197c98c8dc7e97e760968306a6c1d3c5878 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4313680 Reviewed-by: Mark Łobodziński <mark@lunarg.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov cf1bf3e4 2023-03-07T18:41:13 Skip TextureNorm16R16RenderTest and variants Replay corrupts memory by writing past readBufferSize due to GL_PACK_SKIP_ROWS etc Bug: angleproject:8070 Change-Id: I7db1ef9dadf3735841c96f242e9bd9a993b5d16e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4317088 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 815a4aae 2023-03-01T00:00:00 Fix stencil format exposure * Removed invalid STENCIL format table entry * Removed incorrect OpenGL ES 2.0 validation * Removed obsolete end2end test suppressions * Hid GL_OES_texture_stencil8 from ES 2.0 contexts * Marked unsized STENCIL_INDEX as never texturable * Marked unsized STENCIL_INDEX as never renderable Bug: angleproject:3231 Fixed: angleproject:5136 Change-Id: I3f2cb8240344db410773b6a5bde460a43eb32a2e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4307120 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev 8abf7153 2023-03-01T00:00:00 GL: Complete EXT_blend_func_extended * Increased test threshold to 2 to avoid failures on some GPUs * Skipped desktop name bindings when running on OpenGL ES * Adjusted extension exposure conditions to avoid failures on older platforms * Adjusted webgl_FragData array size Bug: angleproject:1085 Bug: angleproject:2833 Change-Id: Ic72ba42b024de276d3586446e03013e6063d15ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4307122 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 4256c022 2023-03-01T00:00:00 Metal: Implement ANGLE_stencil_texturing Used texture views to sample stencil values from combined depth/stencil textures. Texture2DDepthStencilTestES3.TexSampleModes* tests were split into swizzled and non-swizzled variants to suppress only swizzled cases on some platforms. Added a new avoidStencilTextureSwizzle workaround to skip creating swizzled texture views of stencil-only textures on platforms that fail to sample from them. Fixed: angleproject:8051 Change-Id: I0b1148f8d30fc6459239efcdaeee6c0364633cc8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4304058 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Cody Northrop 06aaa0c0 2023-03-05T17:40:38 Tests: Add Harry Potter: Hogwarts Mystery trace Test: angle_trace_tests --gtest_filter="*harry_potter_hogwarts_mystery*" Bug: b/271766619 Change-Id: I3efffb191b97b5fcc4d1d0626cba2127a309d157 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4311481 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 84644dd3 2023-03-03T12:30:35 Improve logging to make batch failures more clear. When logging suddenly interrupts it's hard to tell what's going on (see bug) Bug: angleproject:8060 Change-Id: I83c33818d79e442956045772913c6418ac705466 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4307774 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev 3fed0866 2023-02-22T00:00:00 Implement EXT_texture_mirror_clamp_to_edge Support GL_MIRROR_CLAMP_TO_EDGE_EXT address mode when native support is available. Adjusted validation, sorted switch cases by target enums order. Added new TextureMirrorClampToEdge* end2end tests. Drive-by: fixed texture address computation for integer formats with GL_MIRRORED_REPEAT on D3D11. Fixed: angleproject:7968 Change-Id: Iaf29c8b4b32a7630c2a871f832d171f4bc4e2672 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4289137 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Amirali Abdolrashidi 18a1022e 2023-03-01T13:55:41 Manual roll VK-GL-CTS from c0a0038a1bed to 04e5d38379bd (12 revisions) Manual roll requested by abdolrashidi@google.com * Skipped the following test from KHR-GLES3* * shaders.negative.non_precision_qualifiers_in_struct_members https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/c0a0038a1bed..04e5d38379bd 2023-02-24 anna.lesniewska@intel.com Add depth tests running on local heap with host visible memtype 2023-02-24 piotr.byszewski@mobica.com Merge vk-gl-cts/vulkansc-cts-1.0.1 into vk-gl-cts/main 2023-02-24 piotr.byszewski@mobica.com Merge vk-gl-cts/opengl-cts-4.6.3 into vk-gl-cts/main 2023-02-24 rgarcia@igalia.com Add GLES_ALLOW_DIRECT_LINK CMake option 2023-02-24 piotr.byszewski@mobica.com Test textureSize for oob lod 2023-02-24 syoussefi@google.com Tests for surface/swapchain maintenance1 2023-02-24 michal.jakubek@mobica.com Add coverage of vkGetImageMemoryRequirements2 for multiplanar formats 2023-02-24 Andrew.Fobel@amd.com Fix BufferView access tests for scaled types 2023-02-24 piotr.byszewski@mobica.com Merge vk-gl-cts/vulkan-cts-1.3.5 into vk-gl-cts/main 2023-02-22 piotr.byszewski@mobica.com Merge vk-gl-cts/dev/VK_EXT_pipeline_library_group_handles into vk-gl-cts/main 2023-02-14 ziga@lunarg.com Remove invalid new linked pipeline test with null layout 2023-02-13 piotr.byszewski@mobica.com Merge vk-gl-cts/opengl-cts-4.6.3 into vk-gl-cts/main If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vk-gl-cts-angle-autoroll Please CC abdolrashidi@google.com,angle-team@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:8045 Tbr: abdolrashidi@google.com Change-Id: Ie7e145113c58ede9ba718499b54b0cb32b36f268 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4301430 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Alexey Knyazev a2efea13 2023-03-01T00:00:00 Add ANGLE_stencil_texturing This extension allows texturing of the stencil component of a packed depth stencil texture on OpenGL ES 3.0 contexts. Trivially exposed on backends that support OpenGL ES 3.1, which requires this feature. Adjusted the tests to check for the new extension string instead of the context version. Bug: angleproject:8051 Change-Id: I4d833acbc72e7374bde91d4c861598a0fdaf9b90 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4295312 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Yuly Novikov 5fd68d59 2023-03-01T14:31:15 Skip FramebufferTest_ES3.RenderSharedExponent on iOS Metal Bug: angleproject:8043 Change-Id: Ib7e28ac1a2d658056e960272783ef322e1f009d8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4294902 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Mike Schuchardt 190a3214 2023-02-20T17:42:02 Tests: Add Arknights trace Test: angle_trace_tests --gtest_filter=TraceTest.arknights Bug: b/270523023 Change-Id: I147927e5ada7470a91d8aee540cf217fcb1e4ec1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4294655 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mike Schuchardt <mikes@lunarg.com>
Alexey Knyazev e2cf65ed 2023-02-22T00:00:00 Implement QCOM_render_shared_exponent Fixed: angleproject:8043 Change-Id: Ia76b8e4b60a640180bae77cba523142749051398 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4289140 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev a1f9b9aa 2023-02-20T00:00:00 Implement more texture border color adjustments D3D11: * Exposed EXT_texture_border_clamp extension string, to ensure that the relevant CTS tests are running. * Updated StateManager11::setSamplerState to adjust the border color based on the texture format. * Refactored ShaderConstants11::updateSamplerMetadata to correctly adjust the border color for integer formats. * Removed unused SamplerMetadata.internalFormatBits D3D9: * Updated Renderer9::setSamplerState to adjust the border color value based on the current texture format. * Added borderColorSrgb feature required for some drivers. GL: * Copy alpha value to green for A and LA legacy formats to workaround driver bugs when lumaWorkaround is not used. Tests: * Added ES 2.0 tests for texture formats that require border color adjustments. Fixed: angleproject:7969 Change-Id: I3d36cce43e76e6d5069a51865152c2250ecbb017 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4291000 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Igor Nazarov 1365f5b3 2022-09-09T17:19:26 Vulkan: Fix Swapchain Acquire Image Semaphore wait stage flags. There is a screen tearing on G996B with single "glClear(GL_COLOR_BUFFER_BIT)" no scissor in the frame. Fixed by defining "kSwapchainAcquireImageWaitStageFlags" and adding "VK_PIPELINE_STAGE_TRANSFER_BIT" stage flag. Also added "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT" stage, because first use of the Swapchain Image after Acquire may be in the "glBlitFramebuffer()" command. This fix may slightly affect performance. In such case, a better fix should be implemented (include only stages based on the actual first use). However, this may be not trivial. Additionally, "kSwapchainAcquireImageWaitStageFlags" is used as a source stage mask in the "ImageLayout::Present" pipeline barrier. This is needed in order to build a dependency chain from the Acquire Image Semaphore to the layout transition's first synchronization scope, so that layout transition happens after acquire semaphore is signaled. Reference: https://github.com/KhronosGroup/Vulkan-Docs/wiki/Synchronization-Examples#combined-graphicspresent-queue https://vulkan-tutorial.com/Drawing_a_triangle/Drawing/Rendering_and_presentation Alternative fix of both issues is to define: kSwapchainAcquireImageWaitStageFlags = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT This might potentially delay command buffer execution relative to the Swapchain Acquire Image Semaphore signal operations, but will relax the pipeline barrier. Bug: angleproject:8030 Test: angle_end2end_tests --gtest_also_run_disabled_tests --gtest_filter=EGLSurfaceTest.DISABLED_RandomClearTearing* Change-Id: I29f58862c4b369524b2555dd944e2fb67eebe956 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4271377 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
Cody Northrop ef6d1473 2023-02-24T08:27:33 Tests: Add Into the Dead 2 trace Test: angle_trace_tests --gtest_filter="*into_the_dead_2*" Bug: b/270605668 Change-Id: I80d1aa8058a8d970888725ca850ed934a100588b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4290021 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Alexey Knyazev 5bc6bf32 2023-02-20T00:00:00 Include DXT1 sRGB in RGBDXT1TexturesSampleZeroAlpha Bug: angleproject:3729 Change-Id: Id5404e4601a3165051ee4b249646b7ca000bedbe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4290988 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Mike Schuchardt 13f246de 2023-02-20T17:43:57 Tests: Add Cookie Run Oven Break trace Test: angle_trace_tests --gtest_filter=TraceTest.cookie_run_oven_break Bug: b/270534812 Change-Id: I39109fc119cc82914e563b06cce912409a5c0434 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4289587 Commit-Queue: Mike Schuchardt <mikes@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 9f4ebedf 2023-02-22T14:51:35 Tests: Add TMNT: Shredder's Revenge trace Test: angle_trace_tests --gtest_filter="*tmnt_shredders_revenge*" Bug: b/270426257 Change-Id: I36598eafdc37c77418e052f1539901cd6bb6aae8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4284638 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 2ec90ada 2023-02-23T21:33:40 TraceTests: Update screenshot name for keyframe Ensure we use the member variable screenshot instead of global when naming the screenshot. Test: into_the_dead_2 with keyframe 10 Bug: angleproject:8035 Bug: b/270426257 Bug: b/270605668 Change-Id: Ib5c5c1764005cd0b2fc4603ca11e10d19a50a152 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4288617 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Brian Sheedy 9566011b 2023-02-23T15:01:59 Add support for permissive pixel comparison Adds support for running ANGLE pixel tests with a more permissive inexact matching algorithm. This is done by passing in --use-permissive-pixel-comparison=1 to the test runner. This is intended to reduce the amount of manual triage work required on CLs that are expected to have a larger amount of differences, such as SwiftShader rolls. On the bots, this will normally be disabled, but will be enabled if "Use-Permissive-Angle-Pixel-Comparison: True" is present as a CL footer. This footer is not yet included automatically anywhere, so there should be no functional change as a result of this CL yet. Bug: angleproject:7985 Change-Id: Ie815fac42edb2198dd4d115fc50650504df136c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4288612 Auto-Submit: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Mark Lobodzinski f8e56b0c 2023-02-23T16:29:52 Tests: Add SLAM DUNK from TV Animation trace Test: angle_trace_tests --gtest_filter=TraceTest.slam_dunk_from_tv_animation bug: b/270534814 Change-Id: I2062819c1f64c114ada23723188d8f090f57ab46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4288749 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop d9dbc20e 2023-02-23T17:10:06 TraceTests: Add a screenshot frame member variable Instead of modifying a global when detecting KeyFrames are in use by a trace, update a new value tracked per trace. Also consolidate the option handling for gRunToKeyFrame since its needs align with gMaxStepsPerformed. Test: Batching traces that include one with a keyframe Bug: angleproject:8035 Bug: b/270426257 Change-Id: I2ed4215d9f310dddb317debf09921aa45c6822bf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4288616 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Hailin Zhang 7189e4cf 2023-02-23T11:03:40 vulkan: fix depth buffer renderpass loadOp issue. when change the depth compare function, Renderpass need to change the mAcess flag accordingly. Bug: b/269929460 Change-Id: I83826c1b07c6d22600d6cd039e7d8bfd0b5b39c3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4284624 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Hailin Zhang <hailinzhang@google.com>
Cody Northrop b0739436 2023-02-13T14:28:17 Traces: Add key frame support Allow specifying a key frame in the trace JSON, i.e: "KeyFrames": [ 20 ], This allows our infra to use a frame other than 1 when taking screenshots for quality comparison. Adds new flag `--run-to-key-frame`, which will stop the trace once key frame has been reached. If no key frame in JSON, frame 1 will be used. Note the name in JSON is plural, but we only support one key frame for now. Multiple key frame support can come in the future. This CL also updates the code to allow ending traces early with `--max-steps-performed` which has been broken since http://crrev/c/4008998 It also removes `--one-frame-only` which is superseded by `--run-to-key-frame`, and can be replicated using `--max-steps-performed 1`. Test: angle_trace_tests --gtest_filter="*tmnt_shredders_revenge*" Bug: angleproject:8035 Bug: b/270426257 Change-Id: Ib02ef60d887ae5efb0288f5a9b8c2914dafc6efc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4284637 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Alexey Knyazev b42c2332 2023-02-20T00:00:00 Refine sRGB mipmap generation Compute average of the decoded floating-point values instead of the truncated 8-bit values. Fixed: angleproject:8034 Change-Id: I1ad9c98ff6bbebe63912fb3339faa471c30f43be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4279710 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Amirali Abdolrashidi 3a7904e1 2023-01-25T23:56:56 Vulkan: Use VMA suballocation for images There is a maximum limit for device memory object allocation. On some platforms, there can be an error regarding too many object allocations when 4096 device memory handles have been allocated. Suballocation can help mitigate this issue. In this CL, some images will be allocated using VMA API calls, which use suballocation. * Added a new feature (useVmaForImageSuballocation). * Added VMA allocation for ImageHelper, which is used in initMemory(). * Suballocation is used for VMA image allocation. * If enabled, mVmaAllocation will be initialized in the ImageHelper object (instead of mDeviceMemory). * It is currently used for all platforms. * Minor change to the name of an arg in CreateBuffer() declaration. * Added test to make sure we can allocate at least 4096 images on supported platforms (8000 in the test). * Skipped the test "NonZeroBaseEmulatedClear" when run on Linux/Intel if this feature is enabled (due to output color mismatch). * Skipped several tests for capture/replay on Windows. Bug: b/218891184 Change-Id: Ibf80c9c8c485b301da7d23b5ba4bcbb1a8e3194f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4191202 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi 48588a89 2023-02-17T11:03:56 Update the common cube map texture in MipmapTest In MipmapTest, mTextureCube is defined so that one side is set to blue. However, the other sides are not explicitly defined. This seems to be causing capture/replay errors due to context mismatch after updating the image memory allocation method to use VMA. (CL: https://crrev.com/c/4191202) * Added definition for the other sides of mTextureCube, now set to white. Bug: b/267811497 Change-Id: Icaca67ba6032e5156c9f4bbf3913459d863c2f1d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4264172 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Shahbaz Youssefi facd07ec 2023-02-14T14:11:00 Vulkan: Prune all statements without side effect Bug: chromium:1417461 Bug: angleproject:6061 Change-Id: I6e2b74589021ee60c99448e43ee3eb7f06796ede Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4250278 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev dbd5d6df 2023-02-17T00:00:00 Vulkan: Fix border color adjustment for emulated formats Emulated opaque ETC compressed formats are decoded to RGBA8 so the border color must have its alpha as one. Generalized AdjustBorderColor to enforce opaque alpha for opaque formats and to support both ways, in which ANGLE could emulate LUMA formats. Moved AdjustBorderColor to renderer_utils so it could be used with other backends. Bug: angleproject:5978 Change-Id: I9ec44444fd373b1ca6116ebc4447063a014025ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4265514 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 05e62f39 2023-02-16T23:16:46 Vulkan: Don't close render pass if rebind to same fbo In the Vulkan backend, the render pass can occasionally (and transiently) be in a state of "open but inactive". This is when the render pass is closed, but has the potential for future modifications (for example to add a resolve attachment). Under many circumstances, it is expected that an open render pass cannot be in such a state. This assumption can be broken in this scenario: - Open render pass, draw, etc - Change framebuffer binding - Change framebuffer binding back to original - Masked Clear When ContextVk is synced before clear, it sees that the framebuffer binding is changed (though it hasn't really), and it closes the render passes and sets the render pass dirty bit. If a draw were to follow, a new render pass would have started (unnecessarily). However, in the case of a masked clear, UtilsVk notices that the render pass is started, assumes it must be active, and continues recording to it. While the operation itself succeeds, the assumption that the render pass is active is false (and fails assertion). This change makes sure that framebuffer binding change is no-oped if the framebuffer is the same one that has opened the current render pass. If any application does unnecessary binding changes and back, it will be optimized by this change as well. Bug: chromium:1411210 Change-Id: I37a3a9f2eaa1a81a1b3393840b9458ec71a87377 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4261215 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 1148a662 2023-02-15T08:25:51 Update GL_ARM_shader_framebuffer_fetch token support These were missed during initial implementation because the target app doesn't use them, and there are no tests for vendor extensions. The implementation is basically a noop, but allows setting and querying state, unblocking apps. Also add a test that has basic usage. Test: FramebufferFetchES31.BasicTokenUsage_ARM Bug: b/269233744 Bug: angleproject:8025 Change-Id: Ic107150d4afd9c4c4984c58a1dafb1c18e608997 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4255965 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Igor Nazarov 8cac53cd 2023-01-17T19:22:57 Vulkan: Fix incorrect "SharedPresent" barrier. Previous fix swapped top/bottom barriers: 629da7fc9cd4886dd87f07a069c259551e892936 Fix dEQP-EGL.functional.mutable_render_buffer#basic Above fix is only partial, because it only includes execution dependency without memory barriers (top/bottom stages has no memory access). Fixed by forcing all possible stages for "SharedPresent" images. Better solution requires creating specific versions of "ImageLayout::SharedPresent". Added new test that skips "glFlush()" before "glReadPixels()". Performing flush executes present and may "fix" the barrier problem. New test fails on "Samsung Galaxy S22+ S906B" Bug: b/264420030 Test: angle_end2end_tests --gtest_filter="EGLSingleBufferTest.SharedPresentBarrier*" Change-Id: Icbb50900d99e42d2e9482cd6109981bbc460348a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4262068 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 9d84ad7d 2023-02-14T10:47:54 Translator: Fix sampler-in-struct when struct is unused Standalone symbols as statements are also pruned. For example in the below: ``` x; g(); ``` The line that only contains `x;` is pruned. In particular, this was causing a bug with sampler-in-struct processing where the code ASSERTs that if an instance of the struct is visited during traversal, that it's already processed as part of an index chain (like s.member), but in the above situation that is not true. Bug: chromium:1416152 Change-Id: I49e9a5826fc4d8c1fef1fa6f1d38c65f33f8acfd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4247584 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Mark Lobodzinski 6f092c31 2023-02-16T08:45:18 Tests: Add star trek fleet command trace Test: angle_trace_tests --gtest_filter=TraceTest.star_trek_fleet_command bug: b/269577054 Change-Id: I2e7ae40d47b89b854a3ecbb87aba7fe8fcfdf8ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4261952 Commit-Queue: Mark Łobodziński <mark@lunarg.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Brian Sheedy 81c7a7d9 2023-02-15T11:33:05 Use per-channel fuzzy threshold Switches the fuzzy threshold used in Gold-backed pixel tests to be per-channel instead of the sum of all channels. This means that a difference of [1, 1, 1, 0] between two pixels will now pass, whereas before that would have required a threshold of 3. This is intended to only ever auto-approve changes that can be attributed to rounding errors. Bug: angleproject:7985 Change-Id: Id057534c3e92ee9a4fbd1545fd1a16b28fea61b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4256778 Auto-Submit: Brian Sheedy <bsheedy@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Alexey Knyazev 8c2fcc70 2023-02-02T00:00:00 Metal: Implement EXT_blend_func_extended Fixed: angleproject:8015 Change-Id: Ic92a8823869bf097349aee6241f6cfb86942c945 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4242128 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Igor Nazarov ceb49b1c 2023-01-17T19:21:43 Vulkan: Fix crashes when Surface is not current. It is possible to destroy Surface while some resources are still in use (by CPU/GPU): 1. Make Surface current. 2. Draw something. 3. Make other Surface current (same Context). 4. (optional - if test Surface is Window Surface) Draw something. 5. Delete Surface. 6. UnMake the Context from current. 7. Different crashes possible depending on Surface type and what is done in step 2. Bug: angleproject:8017 Test: angle_end2end_tests --gtest_filter="EGLSurfaceTest.DestroyNotCurrent*Surface*" Change-Id: I3102aa237075b301b3222b420415753c83ba192a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4227073 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Yuxin Hu 629da7fc 2023-01-26T12:25:04 Fix dEQP-EGL.functional.mutable_render_buffer#basic These are vulkan commands submitted between glClear() and glReadPixels() when the EGL_RENDER_BUFFER is EGL_SINGLE_BUFFER (ImageLayour is SharedPresent): ``` vkCmdClearColorImage() vkCmdPipelineBarrier: ( VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,//srcStageMask VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,//dstStageMask VK_ACCESS_MEMORY_WRITE_BIT,//srcAccessMask VK_ACCESS_MEMORY_WRITE_BIT|VK_ACCESS_MEMORY_READ_BIT//dstAccessMask ) vkCmdCopyImageToBuffer() ``` This means that operations at the bottom of pipeline in vkCmdCopyImageToBuffer() need to wait for operations at the top of pipeline in vmCmdClearColorImage(), which translates to vkCmdCopyImageToBuffer() does not have to wait for vkCmdClearColorImage() to finish. Even the dstAccessMask ensures that vkCmdCopyImageToBuffer() will invalidate cache before copying image, it is possible that it will retrieve the old Framebuffer color attachment data as the vkCmdClearColorImage() has not finished. This CL fixes the bug by making the srcStageMask to be VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT and the dstStageMask to be VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, when the ImageLayout is SharedPresent. This ensures that vkCmdCopyImageToBuffer() waits for vkCmdClearColorImage() to finish. This CL also addresses similar issue in some other rx::vk::ImageLayout items in kImageMemoryBarrierData. Bug: b/264420030 Change-Id: If47ab071afaf96e396357cb0f50131339fa58509 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4198476 Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Constantine Shablya 31d576ca 2023-02-15T00:34:07 Tests: Add SuperTuxKart trace Test: angle_trace_tests --gtest_filter=TraceTest.supertuxkart Bug: angleproject:8023 Change-Id: I9d427700a5e3badde0e66e55b24d50725c338251 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4251637 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Mike Schuchardt 2e70fa15 2023-02-13T23:01:51 Tests: Add Top War: Battle Game trace Test: angle_trace_tests --gtest_filter=TraceTest.top_war Bug: b/269178202 Change-Id: I4537fb99227b6a357a2d16d83da6514ecfd2a39e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4246716 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Mike Schuchardt <mikes@lunarg.com>
Charlie Lao 9e33b83a 2023-02-14T11:47:17 Vulkan: Fix bug in EGLMultiContextTest.ReuseUnterminatedDisplay This test is not destroying the context properly, which leads to eglTerminate(dpy) not actually destroying the RendererVk. When the next test app runs, it calls RendererVk::initialize again and calls volkLoadInstance(mInstance). Because the previous RendererVk object is still there, and the two CommandQueue shares the same volk instance, writing to volk function table causes tsan to complain that other thread is still using the old function pointer that now gets overwritten. The test really should clean up properly here in order to have other test to continue to run. Bug: angleproject:7602 Change-Id: I93cd2439194aba9f28ce478aaf79ae8b81c6426b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4249984 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Kenneth Russell ee64836f 2023-02-11T17:56:06 Revert "Metal: Optimized BufferSubData per device" This reverts commit 968041b54770af8917001d8fe9b52a881cfed0b2. Includes the following patches: git revert -n 995db1f66bcf87fc9e47d908fb2a885e810d2567 \ 9a6c90c8f802b4d107a081bfccaf4be007e7af54 \ dbd47e378582ef86db52c7379cd220cf0b2c8193 \ 369b320f92f54774879e8b8faff834fc8db0793e \ 4abae6f97586448712e2dc1cced4a678b0901d7b \ 968041b54770af8917001d8fe9b52a881cfed0b2 Several conflicts with top-of-tree were resolved during this revert. The aim is to reland this with additional code which will reduce the amount of excess buffer memory allocated, and release the resources associated with temporary buffer allocations. Bug: angleproject:7544 Change-Id: Ib7a6bc2ab1c2f23cb43112cd980106e2898c3826 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4240556 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Gregg Tavares <gman@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Igor Nazarov 48b6ebad 2023-02-13T16:37:15 Test: Move code of EGLSurfaceTest::runWaitSemaphoreTest(). To improve readability, code moved from class body closer to the tests. Bug: angleproject:7995 Change-Id: I2c0aef593b28cfffe2b04de308274d0007d863c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4245177 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang cad19f01 2022-02-01T17:36:03 Vulkan: Wait forever when waiting on fences If a timeout occurs while waiting for the VK queue to be idle during context destruction, there is no way to safely delete the resources without potentially crashing as the driver is still reading them. Instead, wait forever and let Chrome's watchdog tear the process down. Bug: chromium:1223346 Change-Id: Ifa91465270f54b62a5ead88e8f26b3315072c380 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3430243 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Kimmo Kinnunen 62d35a60 2023-02-10T13:05:14 Metal Fix norm16 subimage uploads w/ signed types The supported texture format tables would have entries for a signed or unsigned internal format and matching type. The texSubImage variants do not communicate the sized internal format, rather unsized format type. Data parameters are validated based on format, not internal format. For these, the signed variants were missing. Add texture format table entries for signed types that match the format parameters. Add a precautionary validation case so that future such bugs would not pass the control flow forward, into the copying phase. Fixed: angleproject:8014 Change-Id: I5b00cca8672691fdb953f62093d62feaa724db99 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4238881 Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Roman Lavrov 90ddd7c7 2023-02-10T16:47:32 Tests: Add Mini Block Craft trace Test: angle_trace_tests --gtest_filter="*mini_block_craft*" Bug: b/267795849 Change-Id: Ia6087066476992367f432d5d032f6f5542eeb2d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4241403 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov a57e36dc 2023-02-10T12:21:36 Tests: Add Durak Online trace Test: angle_trace_tests --gtest_filter="*durak_online*" Bug: b/267794160 Change-Id: Id8047921bf5c48109fd7b59e8262849571701c5c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4241398 Commit-Queue: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Igor Nazarov 0d0e8c37 2023-02-08T17:33:39 Vulkan: Fix mutable render buffer with protected content. Original implementation used Unprotected submission unconditionally. In case of protected content/commands this may cause undefined behavior. New test works OK despite the bug. VVL also did not show error, but should report: VUID-VkSubmitInfo-pNext-04120 If the pNext chain of this structure does not include a VkProtectedSubmitInfo structure with protectedSubmit set to VK_TRUE, then each element of the pCommandBuffers array must be an unprotected command buffer Also from spec: protectedSubmit specifies whether the batch is protected. If protectedSubmit is VK_TRUE, the batch is protected. If protectedSubmit is VK_FALSE, the batch is unprotected. If the VkSubmitInfo::pNext chain does not include this structure, the batch is unprotected. It is a bug in VVL. It ignores check entirely if VkSubmitInfo::pNext chain does not include VkProtectedSubmitInfo structure. Bug: angleproject:3966 Test: angle_end2end_test --gtest_filter="EGLProtectedContentTest.ProtectedContextWithProtectedMutableRenderBufferWindowSurface*" Change-Id: I0e0762e5fdfe19ce6c2184a36d057a95c2c79f00 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4232115 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 4c978523 2023-02-08T13:46:01 Tests: Add Add Words Crush: Word Puzzle Game trace Test: angle_trace_tests --gtest_filter="*words_crush*" Bug: b/267795212 Change-Id: I7c5c19b4306dd9b141f8880e1b4e7948629b6a73 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4233090 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Yuly Novikov 1936ac00 2023-02-08T18:51:58 Fix InstancingTestES3.LargeDivisor suppression Really skip on Win SwANGLE Bug: angleproject:7900 Change-Id: Idcce5545eb4a990c1bc571acf537aac3347a3191 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4231842 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Le Hoang Quyen 92f26ce3 2023-02-02T17:53:48 Metal: fix UBO argument buffers didn't work with managed storage. This bug would happen when forceBufferGPUStorage feature is turned on. This feature forces all buffers to use managed storage mode. We use mtl::BufferPool to allocate an UBO argument buffer. However, we didn't tell it to map the buffer. Later when we used MTLArgumentEncoder to encode the buffer, mtl::Buffer::flush would be a no-op because the Buffer didn't know that it was modified by the MTLArgumentEncoder on the CPU. Consequently, its memory's encoding write wouldn't be visible to the GPU. Fix by passing a mapped pointer to mtl::BufferPool::allocate. This will force a buffer mapping to occur. And memory flushing will properly be invoked after MTLArgumentEncoder finishes the encoding. Fixed: angleproject:7999 Change-Id: Ie486ae526672c89548ee14bc0824da1fdd5673c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4217055 Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Gregg Tavares <gman@chromium.org> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>