src/tests


Log

Author Commit Date CI Message
Cody Northrop 0cec8f74 2020-10-23T13:47:41 Tests: Add Fate/Grand Order trace TBR: jmadill@chromium.org,courtneygo@google.com Test: angle_perftests --gtest_filter="*fate_grand_order*" Bug: b/171582504 Change-Id: I09b421ee5a245474ed1c797e9049a2f379d8dc11 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495542 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 29ca7186 2020-10-25T11:16:29 Tests: Add Dragon Ball Legends trace TBR: jmadill@chromium.org,courtneygo@google.com Test: angle_perftests --gtest_filter="*dragon_ball_legends*" Bug: b/171652453 Change-Id: I668232f3a1e7ca9663f481fb4246b44fb9333b4a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2497104 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 258f17d6 2020-10-23T10:39:25 Tests: Add World of Tanks Blitz trace Test: angle_perftests --gtest_filter="*world_of_tanks_blitz*" Bug: b/171446929 Change-Id: I028bfde50baa583f1ff7bf30ad77fe40026c7ca7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495486 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9e3eec54 2020-10-25T15:44:09 Revert "Vulkan: Make DescriptorPoolHelper a Resource" This reverts commit 5dcd29a6e532e4bd617af8767d488120b57f3b2c. Reason for revert: Breaking the ANGLE -> Chromium roller: https://chromium-review.googlesource.com/c/chromium/src/+/2496281 Original change's description: > Vulkan: Make DescriptorPoolHelper a Resource > > Descriptor pools need to live as long as the descriptor sets that are > allocated from them. Using Serials while building a command to judge a > pool's lifetime is prone to errors, since a command's Serial value > isn't known until the command is submitted, leading to deleting pools > too early relative to when the descriptor set is actually used. > > This CL updates DescriptorPoolHelper to inherit from Resource, so the > descriptor pools can be retain()'ed. This allows the Resource's counter > to indicate that a pool is in use until the command's Serial is known > and can be recorded to indicate when the command completes. This > prevents descriptor pools from being destroyed before the command > completes (while the descriptor sets are still in use), or even before > the command has been submitted. Destroying a descriptor pool resets all > of the descriptors that were allocated from it, which can trigger a > variety of VVL errors depending on when it's erroneously performed. > > This CL also adds the necessary retain() calls for the descriptor pools. > In particular, the pools need to be retained each time a cached > descriptor set that was allocated from it is re-used. This is relatively > simple with the current design, since we always clear the descriptor set > caches whenever a new pool is allocated, so the descriptor pool binding > is always accurate. > > Bug: angleproject:5030 > Test: MultithreadingTest::MultiContextDrawSmallDescriptorPools() > Change-Id: I5fdeeb46159448dfd679d7169e423048348be5ab > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2437609 > Commit-Queue: Tim Van Patten <timvp@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> TBR=courtneygo@google.com,timvp@google.com,jmadill@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:5030 Change-Id: I0fd6d9a0e1b0989b22368ef98652281288699deb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2497222 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2d6b6026 2020-10-25T13:15:09 Skip flaky tests on Win7/NVIDIA/GLES. CopyTextureVariationsTest.CopyTexture/ES2_OpenGLES__AToRGBFlipYUnmultiplyAlpha CopyTextureTest.CopyOutsideMipmap/ES2_OpenGLES Bug: angleproject:5246 Change-Id: I388df27c690d2a082741f2018690bf2fa24a7594 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2497224 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4968245c 2020-10-25T12:58:15 Adjust TestSuite test timeout values. This should prevent flakiness in this test. Bug: angleproject:5245 Change-Id: I841de2cee093ea04b35763314f0a4f5497bcf778 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2497223 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill acd15cae 2020-10-11T17:16:34 Re-land "Link C++ histogram support into angle_perftests." This is the first step in uploading histogram data instead of a gtest special format. We importing several new libraries: - tools/protoc_wrapper - third_party/protobuf - third_party/catapult (was already used for Android) No functional change. Only affects compilation. Protobuf support is disabled when not available. Bug: angleproject:5161 Change-Id: I64be0977648993b1012ff0d9e0439c5876697e36 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2497221 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 6422d3b4 2020-10-25T04:36:53 Metal: Fix 2D array texture's robust resource init 2D array texture's robust resource init didn't work due to mtl::InitializeTextureContents() expects one slice at a time, however TextureMtl::initializeContents() created entire layers index via GetZeroLevelIndex() before passing to mtl::InitializeTextureContents(). Fixed by changing to GetLayerMipIndex() instead. Bug: angleproject:2634 Change-Id: Ie8d80d927a987c2b393d913fda8288b6e06e97d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2494527 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Le Hoang Quyen 9ff58e26 2020-09-27T15:27:12 Metal: Implement sampler object & shadow compare mode Note: GL_TEXTURE_COMPARE_MODE=GL_NONE is not supported on shadow sampler for now. Bug: angleproject:2634 Change-Id: I470bad6322e78ef1408e4334e1e778821df7cbf1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433332 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Mohan Maiya f037cdc4 2020-10-23T17:12:21 Check for precision match of uniforms only if there is static use There are legacy apps that have uniforms declared with different precisions across shaders. There is some wiggle room in the ESSL spec to accommodate such cases as long as the uniforms are not statically used in shaders. We choose this lenient interpretation since it allows for more apps to be compatible with ANGLE. This change allows BADLANDS to progress past a black screen. Bug: angleproject:4971 Tests: angle_end2end_tests --gtest_filter=GLSLTest_ES31.UniformPrecisionMatchValidation* Change-Id: Icdd2056c8415803eb34f2840b0758e1acf53c23a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495493 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 23c12db2 2020-10-24T16:43:27 Expand Mac XFB suppression. TransformFeedbackTest.RecordAndDraw/ES3_OpenGL Bug: angleproject:4992 Change-Id: I42118bba63e32901c3213f9a4ac5b87f2ab209f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495698 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9990a814 2020-10-24T16:11:54 Suppress failing Windows 7 test. ClearTestES3.ScissoredClearHeterogeneousAttachments/ES3_D3D11 Bug: angleproject:5237 Change-Id: I3f3c062e23d77b4621df13ea75f7910ed22ab983 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2496144 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 259d14e5 2020-10-24T13:39:45 Disable timing out Vulkan GLES 1 test. This test is timing out on a Windows 7 config. Test: GLES1ConformanceTest.AmbLight/ES1_Vulkan Bug: angleproject:5234 Change-Id: I4c3ccdeb58d793952aaa44d4902dedf7ce192ec3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2496142 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 1c881dad 2020-09-27T01:35:31 Metal: Implement glRenderbufferStorageMultisample(ANGLE) Bug: angleproject:2634 Change-Id: Ia4dd477cfbad298994036705b43f3a5877e3c9cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433330 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 80d4901a 2020-09-26T19:22:00 Metal: Support integer textures. Bug: angleproject:2634 Bug: angleproject:5154 Change-Id: Iffea26fe2c683557b4fa7c13fddf3523294b47d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433329 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 96714af8 2020-10-22T17:28:20 Vulkan: Dirty pipeline and desc set after mid-RP clear with draw If UtilsVk::clearFramebuffer issues a draw call on the currently open render pass (as opposed to starting one itself), ContextVk would be unaware of the fact that the graphics pipeline and descriptor sets have been changed. This change sets the necessary dirty bits for ContextVk to recover from a UtilsVk::clearFramebuffer call. Bug: chromium:1141040 Change-Id: I865220fb5b3b78bf4c6b6b2896e57d8a7490c270 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2493184 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 2f7fc0f3 2020-10-23T09:58:56 Tests: Remove standalone duplication. Also cleans up some compiler warnings that crept in because of how we structured the test sources in GN. We also no longer need special handling for the test "main" files. Must land after http://crrev.com/c/2495003 rolls into ANGLE. Bug: angleproject:5124 Change-Id: I43ff91b5c8f00214886cd8ac2403702e5026a840 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495281 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 4953f03d 2020-10-23T22:57:43 Revert "Link C++ histogram support into angle_perftests." This reverts commit 7a0263547cda936b320d80c650b69d7522ee1a9f. Reason for revert: Breaks roll of ANGLE into AOSP: ERROR at //testing/test.gni:76:5: Assertion failed. assert(_use_raw_android_executable || enable_java_templates) ^----- See //third_party/catapult/tracing/tracing/BUILD.gn:35:1: whence it was called. test("histogram_unittests") { ^---------------------------- See //src/tests/BUILD.gn:262:17: which caused the file to be included. deps += [ "//third_party/catapult/tracing/tracing:histogram" ] ^------------------------------------------------- Original change's description: > Link C++ histogram support into angle_perftests. > > This is the first step in uploading histogram data instead of a gtest > special format. We importing several new libraries: > > - tools/protoc_wrapper > - third_party/protobuf > - third_party/catapult (was already used for Android) > > No functional change. Only affects compilation. Protobuf support is > disabled when not available. > > Bug: angleproject:5161 > Change-Id: Ie28d57d7e142c437ebd51463ce3e2cafd87468d1 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482294 > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> > Reviewed-by: Brian Sheedy <bsheedy@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> TBR=ynovikov@chromium.org,bsheedy@chromium.org,jmadill@chromium.org Change-Id: I62c4b926cbe82d10e460b28b5f864521e2b1f8ee No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:5161 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495549 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill 31868665 2020-10-23T10:54:02 Test Runner: Only run watchdog in child processes. For single test execution we don't need to be running the watchdog thread. This only serves to cause timeouts in slow running tests. Adds a new method to keep the --batch-id argument in the list of parameters so other functions can process them. Bug: angleproject:5124 Bug: angleproject:5218 Change-Id: I958230149b7d79830802cd55f67f0190de607200 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495282 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi cb5c0b01 2020-10-21T00:12:57 Vulkan: Drop RelaxedPrecision from aliased attributes Take the following example: attribute mediump vec4 a; // location 0 attribute highp vec2 b; // location 0 f(b) This was previously translated to: attribute mediump vec4 a; // location 0 f(a.xy) That difference here is that b was previously highp, but a.xy is mediump. This change drops RelaxedPrecision from attributes so that they are all highp. Note that the temporary SPIR-V ids these attributes are loaded into still retain their RelaxedPrecision decoration (if any), and the precision of calculations in the shader is not increased by this change. Bug: angleproject:4249 Change-Id: Idca0fc667ad6e36ddf428b65ea03706272a9ed9c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2488131 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill 5ffd778e 2020-10-23T13:16:50 Make capture replay tests exectuable. This makes them runnable directly on Linux. Bug: angleproject:5134 Change-Id: Icf5ccf9d82b8cf09b16c5c60312e33752a9724e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2495288 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 33e30205 2020-10-17T19:03:45 Vulkan: sRGB cleanups. A few fixes to how we check for the sRGB override in the TextureVk class. In at least one instance there was a potential edge case where in syncState we might not create the Texture with the mutable bit the second time through the function. Bug: angleproject:5176 Change-Id: I4f1ca6e469b10514c3a0de3120be9ade62568084 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482292 Reviewed-by: Mohan Maiya <m.maiya@samsung.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a7c16c2d 2020-10-21T22:54:56 Trace Tests: Print trace download progress. As the hook runs, we'll now be printing each trace's progress. This uses some tricks with Python's subprocess. Bug: angleproject:5210 Change-Id: I4e776a89c2b3e06ba67f9a82969aa394b24208d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2491104 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Tim Van Patten 5dcd29a6 2020-09-29T14:15:51 Vulkan: Make DescriptorPoolHelper a Resource Descriptor pools need to live as long as the descriptor sets that are allocated from them. Using Serials while building a command to judge a pool's lifetime is prone to errors, since a command's Serial value isn't known until the command is submitted, leading to deleting pools too early relative to when the descriptor set is actually used. This CL updates DescriptorPoolHelper to inherit from Resource, so the descriptor pools can be retain()'ed. This allows the Resource's counter to indicate that a pool is in use until the command's Serial is known and can be recorded to indicate when the command completes. This prevents descriptor pools from being destroyed before the command completes (while the descriptor sets are still in use), or even before the command has been submitted. Destroying a descriptor pool resets all of the descriptors that were allocated from it, which can trigger a variety of VVL errors depending on when it's erroneously performed. This CL also adds the necessary retain() calls for the descriptor pools. In particular, the pools need to be retained each time a cached descriptor set that was allocated from it is re-used. This is relatively simple with the current design, since we always clear the descriptor set caches whenever a new pool is allocated, so the descriptor pool binding is always accurate. Bug: angleproject:5030 Test: MultithreadingTest::MultiContextDrawSmallDescriptorPools() Change-Id: I5fdeeb46159448dfd679d7169e423048348be5ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2437609 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill 7a026354 2020-10-11T17:16:34 Link C++ histogram support into angle_perftests. This is the first step in uploading histogram data instead of a gtest special format. We importing several new libraries: - tools/protoc_wrapper - third_party/protobuf - third_party/catapult (was already used for Android) No functional change. Only affects compilation. Protobuf support is disabled when not available. Bug: angleproject:5161 Change-Id: Ie28d57d7e142c437ebd51463ce3e2cafd87468d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482294 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter cfd70489 2020-10-22T10:26:19 Re-enable dEQP-EGL.functional.fence_sync.* Tests appear to pass now. Going to be changing functionality in this area so prefer to have them enabled. Bug: b/154030730 Bug: angleproject:3271 Change-Id: I1c0ffe40b726943c146fa06aa16de79d434760bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2493182 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill c8542d28 2020-10-22T14:10:32 Temporarily duplicate standalone tests. This switches 'angle_*_tests' to be identical to 'standalone_angle_*_tests'. Once rolled into Chromium we can then switch back to using 'angle_*_tests' and finally remove 'standalone_angle_*_tests' entirely. Must land after https://crrev.com/c/2490987 Bug: angleproject:5124 Change-Id: I1f4794d429733a43113dcba6aaaba0c047607e50 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2491932 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Alexis Hétu fbec291e 2020-10-21T19:32:38 Allow rendering to half float in ES2 contexts when possible According to the EXT_color_buffer_half_float spec: "Dependencies on OES_texture_half_float If OES_texture_half_float is not supported, then all references to RGBA16F_EXT, RGB16F_EXT, RG16F_EXT, R16F_EXT, HALF_FLOAT_OES and half should be ignored. If OES_texture_half_float is supported, textures created with: <internalformat> = RGBA <format> = RGBA <type> = HALF_FLOAT_OES are renderable." This fixes 4 viz_unittests when running with SwANGLE: All/GLI420ConverterPixelTest.ScaleAndConvert/0 All/GLI420ConverterPixelTest.ScaleAndConvert/1 GLScalerPixelTest.Example_ScaleAndExportForScreenVideoCapture GLScalerPixelTest.ScalesWithColorManagement The original attempt at landing this change (https://chromium-review.googlesource.com/c/angle/angle/+/2489726) was reverted due to dEQP failures on the Metal backend. After some investigation, it was decided to simply disable the 2 offending tests for now. Bug: angleproject:5174 Change-Id: Id1e382b72d91109e4718c729cc6c5f0a0f413d7d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2491930 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Cody Northrop 9c8da026 2020-10-22T10:46:00 Revert "Tests: Add FIFA Mobile trace" This reverts commit 2e1091e0ef699a39662f210abcb5af69750dcb38. Reason for revert: Potentially flaky results, http://anglebug.com/5215 Original change's description: > Tests: Add FIFA Mobile trace > > Test: angle_perftests --gtest_filter="*fifa_mobile*" > Bug: b/171421051 > Change-Id: If50c6387a1a49fb6946d20279caf6470544a2b11 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2490279 > Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Cody Northrop <cnorthrop@google.com> TBR=jmadill@chromium.org,syoussefi@chromium.org Bug: angleproject:5215 Change-Id: I6a332b126c6c54f189fd451725957d288ab6b76b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2491113 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Xiaoxuan Liu 883276cc 2020-10-21T16:20:35 Fix end2end tests VertexAttribute* failure VertexAttributeTests used 'mediump' precision to sample ushort with 65533/65534/65535 which exceed the range defined in ESSL Spec. (Spec "4.5.2 Precision Qualifiers") Change precision of attribute 'test' and 'expected' to 'highp' for numbers that exceed the minimum range. Bug: angleproject:5211 Change-Id: I01e5c999ec43d17a7390835d2ac88ce2bc0b4c5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2491621 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 1c7f0284 2020-10-21T01:40:08 Vulkan: Fix invalid clamping of ES3 clear stencil values Added 3 new end2end tests Bug: angleproject:5202 Change-Id: I95f9ffd989105f5bd3283676d6fa46e904503369 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2488481 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Shahbaz Youssefi d7475437 2020-10-20T15:04:18 Vulkan: Support vertex attribute aliasing for matrix types This change builds on vertex attribute aliasing SPIR-V tranformation for non-matrix types to add support for matrix attribute types. This is done by turning every matrix attribute declaration into multiple vector attribute declarations, and reusing the same mechanism for resolving aliasing between non-matrix types. Take the following example: attribute mat4 a; // location 0 attribute vec3 b; // location 1 attribute mat3 c; // location 1 attribute vec4 d; // location 2 The shader is modified as such: attribute vec4 a_0; // location 0 attribute vec4 a_1; // location 1 attribute vec4 a_2; // location 2 attribute vec4 a_3; // location 3 attribute vec3 c_0; // location 4 attribute vec4 d; // location 5 attribute vec3 c_2; // location 6 mat4 a; mat3 c; and in the beginning of main(), the following code is inserted: a = mat4(a_0, a_1, a_2, a_3); c = mat3(c_0, d.xyz, c_2); The shader continues to use a and c as before. Bug: angleproject:4249 Change-Id: Idfcb8c6037ca0c1f21de8203d7e2a1b66fed6e7e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2488128 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Cody Northrop 2e1091e0 2020-10-21T14:53:40 Tests: Add FIFA Mobile trace Test: angle_perftests --gtest_filter="*fifa_mobile*" Bug: b/171421051 Change-Id: If50c6387a1a49fb6946d20279caf6470544a2b11 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2490279 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop ad222d1c 2020-10-20T16:29:08 Tests: Add KartRider Rush+ trace Test: angle_perftests --gtet_filter="*kartrider_rush*" Bug: b/171337677 Change-Id: I9a248ecf51e296a2b894b0951538842a7efde046 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2490277 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 8feb5c82 2020-10-20T15:49:13 Tests: Add Marvel Contest of Champions trace Test: angle_perftests --gtest_filter="*marvel_contest_of_champions*" Bug: b/171334313 Change-Id: Ia1195a5647ad2805e3cabd23c15719eb1ebc3534 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2487764 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Geoff Lang 089ef0fa 2020-10-14T11:31:56 Expose glGetTexLevelParameter{if}v before ES 3.1. Add a new extension, ANGLE_get_tex_level_parameter which allows users to query texture size and format information before ES 3.1. This is very useful for re-using existing textures instead of re-allocating. Bug: chromium:1132514 Change-Id: I71f6bad8bdacb91875cc81b4884d4c3099235f3f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2469959 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill cd88bccf 2020-10-21T08:44:32 Test Runner: Command line sharding args override env. Previously ANGLE would error out when both the enviornment and the command line args are specified at the same time. Because the perf bots use both at once we need to handle the conflict in the same way as the prior test runner does. In this case the command line takes precedence over the environment. Bug: angleproject:5124 Change-Id: I1ba765b4e75759922bf9fe2db9f153cfc5995f85 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2489722 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis fb44e93b 2020-10-20T10:54:48 Disable TransformFeedbackTest.NonExistentTransformFeedback* This test hase begun failing consistently on the Arm based Apple DTK. This adds a skip to the test for that config. Test: TransformFeedbackTest.NonExistentTransformFeedbackVaryingWithGLPrefix:/ES3_OpenGL Bug: chromium:1140113 Change-Id: I97612a073db20c99883908a19ac0013101061da0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2486100 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Mohan Maiya 553726a4 2020-10-20T11:29:17 Vulkan: Add OES_shader_multisample_interpolation extension Addition of 'sample' qualifier keyword and 'interplateAt*' fragment shader builtin functions with autogen Bug: angleproject:3589 Change-Id: If358eb371fbcefffa715c8da4ba5e96eefaf6f52 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2477904 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cody Northrop d591ddff 2020-10-08T10:36:21 Tests: Add Free Fire trace Test: angle_perftests --gtest_filter="*free_fire*" Bug: b/168049517 Change-Id: Ide772454fe5c602d92bf9c476d33da420b9dfa14 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2461350 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Shahbaz Youssefi 9091de43 2020-10-17T00:33:57 Vulkan: Support vertex attribute aliasing for non-matrix types Initial implementation that supports float and vecN types. In this case, every attribute occupies a single location. When two attributes alias, they are either the same size, or one is bigger than the other. Take the following example: attribute vec3 a; // location 0 attribute vec3 b; // location 0 attribute vec4 c; // location 1 attribute vec2 d; // location 1 The shader may access either a or b (but not both). Similarly, it can access either c or d (but not both). The shader can be modified such that: - f(b) is replaced with f(a). - g(d) is replaced with g(c.xy). - b and d are removed As a result, there are no longer any aliasing attributes. In other words, when attributes alias, the larger attribute can be retained and the other attributes can be replaced by selecting the appropriate number of components from the retained attribute. Bug: angleproject:4249 Change-Id: I7c5461f777d659c92977e2572091a8ce5e422704 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482286 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 26cd1cc6 2020-10-18T11:44:27 Perf Tests: Add stdout printing arg to bot mode. This can be useful for debugging and also for perf tests. The perf tests output gets scraped from stdout. Bug: angleproject:5124 Change-Id: Id5005df3f2b66be9497a9ba422abd47b95a1a330 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2486097 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 9d160b0b 2020-10-16T08:31:18 Tests: Add Brawl Stars trace Test: angle_perftests --gtest_filter="*brawl_stars*" Bug: b/171043467 Change-Id: Ide04fbbfd69145554c6dbb544d6ee4daa51df9cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2481154 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 637786a9 2020-10-15T16:23:12 Tests: Add Arena of Valor trace Test: angle_perftest --gtest_filter="*arena*" Bug: b/170994774 Change-Id: I44c81c539da975fefcf085d6fc12f8508826277f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2477440 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Geoff Lang d8529380 2020-10-20T13:55:23 Generate CONTEXT_LOST errors on every GL call. The robustness spec states that all GL calls should generate context lost errors when the context is lost. This behaviour was lost due to some context lookup optimizations but can be re-added at no cost by updating the autogenerated entry points. Updated the ContextLostTest to cover the repeated error generation behaviour. Bug: chromium:1137241 Change-Id: I0b8d1cf4d2a37f13c466c8dd0e66edfe852f7e59 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2488180 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 32f0dd6a 2020-10-15T10:08:51 Add Queries and Setters for resource initialization state. There are cases where we know that the next draw operation will fully initialize a texture/renderbuffer and we can save the robust resource init cost. Default all resource init state to Initialized, any redefinition will set it back to MayNeedInit. After setting an individual texture image to initialized, check if all images are now initialized and update the TextureState::mInitState to match. The cost of this check is only performed after initializing an image and allows future init checks to be faster. Bug: chromium:1132514 Change-Id: Ia23664ae162559d1614f1eb5643e24a491d87f7f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2475456 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 2882e1af 2020-10-20T09:45:23 Fix missing validation cache update on VAO binding. Bug: chromium:1139398 Change-Id: I85a0d7a72bc2c97b07ebc5f86effd8e36aefd544 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2485581 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6e125937 2020-10-20T10:30:14 Suppress timing out GLES 31 tests on GL/Linux. dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.large_offset dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.large_offset_multiple_invocations Bug: angleproject:5197 Change-Id: I379799565850fd2002c1f708bfa58d1e886c7fba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2485284 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop 8061002b 2020-10-16T11:24:04 Perf tests: Bump replay ES version to 3.1 Required to run traces of newer apps. Test: LEGO MEC Bug: b/161716126 Bug: angleproject:4048 Change-Id: Ie135fc1ce461460e1bc0978ceca4ba8c9cff68e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2481153 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 5eebf3a7 2020-10-18T11:44:27 Perf Tests: Call finish every step in calibration. Calibration is only supposed to take one second of warmup time. Instead we were queuing up a large amount of GPU work and then janking on the finish call at the end of calibration. Fix this by calling glFinish repeatedly during calibration. Bug: chromium:1136900 Change-Id: Idb2fefe17fcb9acbe688cff5a36f051732fc5b59 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2483462 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jonathan Ross 4720cfb7 2020-10-19T19:02:56 Disable TransformFeedbackTest.SwitchProgramBeforeDraw/ES3_OpenGL This test hase begun failing consistently on the Arm based Apple DTK. This adds a skip to the test for that config. Test: TransformFeedbackTest.SwitchProgramBeforeDraw/ES3_OpenGL Bug: chromium:1140113 Change-Id: Ie9499f4f90327429c02b3e690d4059838ad835d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2485296 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Yuly Novikov 61ab3819 2020-10-19T14:50:38 Expand ProgramBinaryTest.SRGBDecodeWithSamplerAndTexelFetchTest skip Also Mac ARM64 GL and Nexus 6P GLES. Bug: angleproject:4991 Change-Id: Ie4b1e76c2a804256970829431e8d85a140b22387 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2486091 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jeff Vigil 00a49766 2020-10-14T10:27:56 EGL: Implement EGL_KHR_reusable_sync Add extension string and flags Add EGLReusableSync files to libANGLE and gni Test: angle_deqp_egl_tests --deqp-case=dEQP-EGL.functional.reusable_sync.* --deqp-case=dEQP-EGL.functional.fence_sync.* Bug: angleproject:5168 Change-Id: I967a10cf387047c9ee1963acfc854a8288325a8e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2477293 Commit-Queue: Jeff Vigil <j.vigil@samsung.com> Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 556d812a 2020-10-18T11:48:45 Test Runner: Disable watchdog when debugger attached. Bug: angleproject:3162 Change-Id: I3685a4fe068b6e82b8bb04448c212788f563ab8b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2483463 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Mohan Maiya 2be35682 2020-10-18T10:37:52 Add sRGBOverrideFormats end2end test Addition of a new end2end test to verify that all supported formats can be overridden for the GL_EXT_texture_sRGB_override extension. Bug: angleproject:4561 Test: angle_end2end_tests --gtest_filter=SRGBTextureTestES3.SRGBOverrideFormats*Vulkan* Change-Id: I93c4eab0489a1daadeb27c70ba1f755ed2e58fc4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2483564 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 7bbe497a 2020-10-16T14:46:45 Vulkan: Implement EXT_texture_sRGB_decode Implement EXT_texture_sRGB_decode. This builds on the existing functionality from EXT_texture_sRGB_override, with 2 major edge cases: 1. sRGB_decode allows the texture state to be overridden by sampler state, which is implemented by forcing a a texture state sync during updateActiveTextures if a texture is bound to the same unit as a sampler with that state 2. texelFetch calls require us to reenable decoding, regardless of decode state. We add a new compiler pass (FlagSamplersWithTexelFetch) to mark samplers that are used with texelFetch in order to support this. This change also re-enables EXT_texture_sRGB_R8, which was disabled due to a dEQP bug that this change will bypass. Bug: angleproject:3609 Bug: angleproject:4503 Test: dEQP.GLES31/functional_srgb_texture_decode_skip_decode_* Test: GLES31/functional_state_query_texture_*_srgb_decode_* Test: GLES31/functional_state_query_sampler_*_srgb_decode_* Test: GLES31/functional_debug_negative_coverage_*_srgb_decode_* Test: GLES31/functional_android_extension_pack_extensions_ext_texture_srgb_decode Test: angle_end2end_tests --gtest_filter=SRGBTextureTest.*Vulkan* Change-Id: I4a67e487dc82e2f57c8c87d4bcd8ef442b6fe220 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2359481 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill e3a57381 2020-10-18T15:42:58 Fix VertexAttributeTest.DrawArraysWithBufferOffset. This test was reading past the end of a buffer into undefined data. Bug: angleproject:3951 Bug: angleproject:4163 Bug: angleproject:4258 Bug: angleproject:4269 Change-Id: I54ab9aa0cd1442184692e60c7f99f2139a855d63 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2483842 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9047954c 2020-10-17T20:35:31 More Mac/AMD/GL dEQP suppressions. These tests became flaky with multi-process. Bug: angleproject:5172 Change-Id: I6ede6b33f8c2ddfb3970fbc2b7586c7622b79a09 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482293 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 07ea804e 2020-10-17T08:57:28 Change Android atomic counter tests to skip. These tests were running into LowMemoryKiller issues on the Pixel 2. Disable them until we can switch to a newer OS/Device. Bug: angleproject:5185 Change-Id: Id33d0f6347961e216a471af2e3614f0fb18d28d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482288 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi da09d08f 2020-10-16T00:02:34 Regression tests for vertex attribute aliasing Tests for the upcoming implementation of vertex attribute aliasing in Vulkan. Bug: angleproject:4249 Change-Id: Ic87e44b1815b376da4cda5e8887dd3a05c9cc35f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2477051 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 128ffe4a 2020-10-16T14:35:16 Roll VK-GL-CTS from 618e41c871d6 to 483a71c5130e (11 revisions) Suppress new dEQP-GLES3 tests on Nexus 5X: dEQP-GLES3.functional.transform_feedback.random_full_array_capture.* https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+log/618e41c871d6..483a71c5130e 2020-10-16 alexander.galazin@arm.com Update vk.xml revision 2020-10-16 lionel.g.landwerlin@intel.com Replace incorrect undefined->transfer-dst-opt layout transfers 2020-10-16 michal.m.pawlowski@mobica.com Add cube compat. to array image copy tests 2020-10-16 mikko.tiusanen@siru.fi Tests for pipeline laoyut early destroy 2020-10-09 alexander.galazin@arm.com Merge vk-gl-cts/vulkan-cts-1.2.4 into vk-gl-cts/master 2020-10-09 mika.vainola@siru.fi Modify/add GLES XFB tests without element capture 2020-10-09 afdx@google.com Add a batch of GraphicsFuzz tests 2020-10-08 siglesias@igalia.com Fix wrong access flag for depth/stencil resolve 2020-10-08 lionel.g.landwerlin@intel.com Fix wsi tests using disallowed image usage 2020-10-08 siglesias@igalia.com Output depth image in case of failure 2020-10-08 karolina.palka@mobica.com Check SparseResidency flag before OpImageSparseRead 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 ynovikov@google.com,angle-bots+autoroll-info@google.com on the revert to ensure that a human is aware of the problem. 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/master/autoroll/README.md Bug: angleproject:5184 Tbr: ynovikov@google.com,angle-bots+autoroll-info@google.com Change-Id: Ie46c0306830871d605b15cfcd3abc580989f104f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2480002 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Tim Van Patten 16102e8b 2020-10-17T01:15:05 Reland "Vulkan: Fold deferred clears into current clears" This reverts commit 37c400146e59f718b516eb58e16fa53c8a88bf21. Reason for revert: Need to clear the package cache when bisecting. Original change's description: > Revert "Vulkan: Fold deferred clears into current clears" > > This reverts commit e416c92a81c9ef01d633ec5c05e81c2551b6c5d6. > > Reason for revert: Reverted parent: > https://chromium-review.googlesource.com/c/angle/angle/+/2481612 > > Original change's description: > > Vulkan: Fold deferred clears into current clears > > > > If there are clears prior to a glClear() call, those clears were > > flushed (starting a new render pass) and then the clear call's clears > > would be applied (essentially modifying the loadOps of said render > > pass). > > > > The main downside of the above is that the current glClear() clears > > don't get a chance to be deferred. This was observed in Chrome which > > clears an attachment with an emulated format, then switches > > framebuffers. > > > > Additionally, if the render pass had already been started, the deferred > > clears could have become inlined instead of breaking the render pass. > > Although, it's unlikely for there to be deferred clears when the render > > pass is already open. > > > > This change first identifies which clears need to go through the draw > > path (scissored, masked or as workaround for driver bug). It merges the > > rest of the clears (that don't need the draw path) with the deferred > > clears. It then checks deferred clears and applies them by either: > > > > - vkCmdClearAttachments if mid RP > > - Start a new render pass and use loadOps, if any draw-based clear needs > > to follow. > > - Modify current RP loadOps / defer the clear > > > > Afterwards, the draw-based clears are applied. > > > > Bug: angleproject:4836 > > Change-Id: Id4992c78983b199734508c9d4bb18ed3195c91ec > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2455167 > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Reviewed-by: Charlie Lao <cclao@google.com> > > TBR=syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com > > Change-Id: I85733b3594409df9b96e3d5b34933522c97c42cf > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: angleproject:4836 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2481613 > Reviewed-by: Tim Van Patten <timvp@google.com> > Commit-Queue: Tim Van Patten <timvp@google.com> TBR=timvp@google.com,syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com # Not skipping CQ checks because this is a reland. Bug: angleproject:4836 Change-Id: I702cd510f39ee46feab27d4efbf61ae5da10d4e2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2481856 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill d3e7ed93 2020-10-16T21:30:58 Suppress Mac/AMD/GL GLES2 failures with standalone mode. Bugs due to test ordering. Bug: angleproject:5172 Change-Id: If7e0c93a470bf2338347d484735f1b3691dd9ad5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2482283 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 37c40014 2020-10-16T22:19:20 Revert "Vulkan: Fold deferred clears into current clears" This reverts commit e416c92a81c9ef01d633ec5c05e81c2551b6c5d6. Reason for revert: Reverted parent: https://chromium-review.googlesource.com/c/angle/angle/+/2481612 Original change's description: > Vulkan: Fold deferred clears into current clears > > If there are clears prior to a glClear() call, those clears were > flushed (starting a new render pass) and then the clear call's clears > would be applied (essentially modifying the loadOps of said render > pass). > > The main downside of the above is that the current glClear() clears > don't get a chance to be deferred. This was observed in Chrome which > clears an attachment with an emulated format, then switches > framebuffers. > > Additionally, if the render pass had already been started, the deferred > clears could have become inlined instead of breaking the render pass. > Although, it's unlikely for there to be deferred clears when the render > pass is already open. > > This change first identifies which clears need to go through the draw > path (scissored, masked or as workaround for driver bug). It merges the > rest of the clears (that don't need the draw path) with the deferred > clears. It then checks deferred clears and applies them by either: > > - vkCmdClearAttachments if mid RP > - Start a new render pass and use loadOps, if any draw-based clear needs > to follow. > - Modify current RP loadOps / defer the clear > > Afterwards, the draw-based clears are applied. > > Bug: angleproject:4836 > Change-Id: Id4992c78983b199734508c9d4bb18ed3195c91ec > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2455167 > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Charlie Lao <cclao@google.com> TBR=syoussefi@chromium.org,jmadill@chromium.org,cclao@google.com Change-Id: I85733b3594409df9b96e3d5b34933522c97c42cf No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:4836 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2481613 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill 51ff0d05 2020-10-16T11:54:04 Trace Tests: Add vsync-limited mode with a GPU timer. Local testing on Linux shows that ANGLE and native have the same wall-time, and ANGLE has a 10 ms vs native 6 ms GPU time. Bug: angleproject:5183 Change-Id: I26da678b984af916bfb40e1db6416f5df4f85c08 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2480782 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill ecbac31c 2020-10-16T10:36:06 Perf Tests: Add offscreen mode. This lets the trace perf tests run configurable number of frames within a single swap. The offscreen config is similar to how gfxbench works. It renders to a user FBO (by overriding calls to BindFramebuffer) and then composits multiple frames into the real backbuffer. This allows us to get a perf measurement with less overhead from composition and display. Adds emulation for some APIs that operate on Framebuffers like BindFramebuffer, Invalidate, DrawBuffers and ReadBuffer. Bug: angleproject:4845 Change-Id: I1044c1d52c82f1c215a68a6c46d74c52ed0f3d2a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2300207 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Jamie Madill 2402c336 2020-10-16T13:56:08 Suppress Mac/AMD/GL dEQP failures with standalone mode. These tests appear to flake based on different batch sizes. Disable them for now until we have time to investigate. See issue for more details. Bug: angleproject:5172 Change-Id: I90fff3b3400cbd5a5aa0d5e9a23364320fba7e4d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2480785 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 5025d781 2020-10-16T08:50:56 Remove flaky check in TimerQueriesTest. We cannot guarantee that a shader with more instructions will always take more time than a smaller shader. Bug: angleproject:5178 Change-Id: Icf48a7b73ad482237cf3161667d75a25e36dd643 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2479682 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill b620ca9e 2020-10-16T13:10:28 Suppress fragment out int tests on Intel/Mac/GL. These tests started failing when run in larger batches. The test order caused determimnistic failures. See the issue for more details. Bug: angleproject:5172 Change-Id: If5be66b843c1e0fccba962ff55e5064cbee60859 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2480784 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Le Hoang Quyen 27e7e446 2020-09-27T00:00:35 Metal: Support 2D array textures and base & max levels. Bug: angleproject:2634 Change-Id: If9e50cec46bdf5f472f1e58c6e82a67b524e2408 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433327 Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill b4fb7cc9 2020-10-15T08:58:06 Test Runner: Print reproduction steps on a batch failure. This prints out a large gtest_filter of the tests in a batch. Makes reproducing a particular failure much easier. In the future we could potentially look at using an encoding to reproduce a specific batch: e.g. a flag that acceps a batch / shard number and runs those tests based on using the same internal counts. Bug: angleproject:5172 Change-Id: Iefad8f5ca23761417ad1ceb11fd664c9cf23c8be Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2475455 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 089eac22 2020-10-11T12:40:07 Perf tests: remove redundant null naming. Bug: None Change-Id: I9e3e0d8b160a438c9001d9dbd4bb067355b9e562 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2475457 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi e416c92a 2020-10-06T23:29:02 Vulkan: Fold deferred clears into current clears If there are clears prior to a glClear() call, those clears were flushed (starting a new render pass) and then the clear call's clears would be applied (essentially modifying the loadOps of said render pass). The main downside of the above is that the current glClear() clears don't get a chance to be deferred. This was observed in Chrome which clears an attachment with an emulated format, then switches framebuffers. Additionally, if the render pass had already been started, the deferred clears could have become inlined instead of breaking the render pass. Although, it's unlikely for there to be deferred clears when the render pass is already open. This change first identifies which clears need to go through the draw path (scissored, masked or as workaround for driver bug). It merges the rest of the clears (that don't need the draw path) with the deferred clears. It then checks deferred clears and applies them by either: - vkCmdClearAttachments if mid RP - Start a new render pass and use loadOps, if any draw-based clear needs to follow. - Modify current RP loadOps / defer the clear Afterwards, the draw-based clears are applied. Bug: angleproject:4836 Change-Id: Id4992c78983b199734508c9d4bb18ed3195c91ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2455167 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jeff Vigil 8eaf72a8 2020-10-14T10:20:20 EGL: Entrypoint and autogen for EGL_KHR_reusable_sync Add entry point eglSignalSync Update autogen files Test: angle_deqp_egl_tests --deqp-case=dEQP-EGL.functional.reusable_sync.* Bug: angleproject:5168 Change-Id: I47afa4010c533096b4c56e9b3ab6eddc1944b83e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2472998 Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jeff Vigil <j.vigil@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill c9206a08 2020-10-15T11:15:28 GLES/GL/Win: Suppress all constancy samples tests. These were all flaking. Use two simple wildcard patterns. Bug: angleproject:5162 Change-Id: I37cd7db1234c5586bc7c61c7b8f379c878b2ae2b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2475458 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 12462910 2020-10-14T17:33:50 Skip slow GLES 1 Win/Intel/Vulkan test. GLES1ConformanceTest.Blend/ES1_Vulkan Bug: angleproject:5171 Change-Id: I2f3bb0d53676ed54e1fb74816e7c93a8e44042a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2472536 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Schade b22e437a 2020-10-07T18:02:39 Add GL_EXT_copy_image extension entry points Bug: angleproject:3593 Change-Id: I6d3a55a3112f5f9b20ef33c859a60b2952bfbc2f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2444209 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Brian Sheedy 1075b47a 2020-10-14T13:24:58 Disable more ARM-based Mac tests Disables the following tests due to them failing on the ARM-based Mac DTKs: * GLSLTest_ES3.GLVertexIDIntegerTextureDrawArrays/ES3_OpenGL * OcclusionQueriesTest.MultiQueries/ES2_Metal * TransformFeedbackTest.TwoUnreferencedInFragShader/ES3_OpenGL * WebGL2CompatibilityTest.CopyMip1ToMip0/ES3_OpenGL Bug: chromium:1132295 Change-Id: I557e3c978d884e9beeafb4f43676271edcd36a87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2472532 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d4b35199 2020-10-14T13:58:47 Skip slow EGL Vulkan Linux tests. dEQP-EGL.functional.swap_buffers_with_damage.resize_after_swap.* dEQP-EGL.functional.swap_buffers_with_damage.resize_before_swap.* See issue for more details. Bug: angleproject:5170 Change-Id: Id0376dcb26514dffc09a28e9ad7b2ade8d50b8c7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2472518 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill fbc33c82 2020-10-14T13:58:47 Fail 3 tests on Android GLES N5X. These tests are failing for unknown ordering reasons: dEQP-GLES2.functional.fbo.render.texsubimage.after_render_tex2d_rgba dEQP-GLES2.functional.fbo.render.texsubimage.between_render_tex2d_rgb dEQP-GLES2.functional.fbo.render.texsubimage.between_render_tex2d_rgba Bug: angleproject:5169 Change-Id: I25e592f6aa50cf80b0d60f04085c42cb1169dd31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2472517 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 2aaeb81d 2020-10-06T17:20:29 Vulkan: loadOp=DONT_CARE + unused D/S => invalidate D/S If depth/stencil is not loaded, and it's not written to during the render pass, then treat it as if it was invalidated so storeOp can be set to DONT_CARE and its corresponding resolve attachment (if any) removed. This is especially useful for MSRTT as a resolve attachment is added at the start of render pass, and this optimization will give it a chance to undo that if depth/stencil was not actually used in the render pass. This situation can arise for example if a render pass is created for the sole purpose of clearing color. This change includes a bug fix for missing depth/stencil on*Access in the UtilsVk blit/resolve path. Bug: angleproject:4836 Change-Id: Ifc8eea3e6ffb3eb4bba19f03d1358f151ec69c44 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2453468 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill a8c5d295 2020-10-14T10:32:00 Skip two more FBO max samples tests on Win/NV/GL. These two tests are causing the driver internally to OOM. dEQP-GLES3.functional.multisample.fbo_max_samples.constancy_sample_coverage_inverted dEQP-GLES3.functional.multisample.fbo_max_samples.constancy_both Bug: angleproject:5162 Change-Id: I6960b4b171efb2f74b42a82d8ecafce1edb167c1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2469958 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 39b5e771 2020-10-09T11:06:10 Vulkan: Fix vector size issue with clearWithCommand gl::DrawBuffersVector was used to hold the clear values, but that didn't have enough space for depth/stencil clear values if MAX draw buffers where used and cleared. The added test in this change exposes the vkCmdClearAttachment Qualcomm bug (previously presumed to affect color clears only) with depth/stencil buffers, so the workaround is expanded to avoid vkCmdClearAttachment entirely. Bug: b/159808300 Change-Id: I27c58d9b534bce0bdd27cc53fc64e139f1363c1a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2455166 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Shahbaz Youssefi bd0d3f9c 2020-10-13T12:50:10 Vulkan: Regression test for content defined of AHB images Bug: b/167275320 Bug: angleproject:4836 Change-Id: Ic5da615931f13e1ce34f486f163d4f28c8af9287 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2468458 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi df8f71d1 2020-10-09T15:27:28 Vulkan: Don't break the render pass on scissored clears clearImmediatelyWithRenderPassOp is removed and the draw path is used for the scissor. That path was added to avoid creating a large number of graphics pipelines due to the scissor state. This is now done by using dynamic state for scissor in the draw path for clear. Running the following dEQP tests without and with dynamic state for scissor: dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops.* the number of graphics pipelines is reduced from 95392 to 16. Bug: angleproject:4617 Bug: angleproject:4836 Change-Id: Ib373d8cd23ca2b67e6fd26aa2a1103f281f7e473 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2463985 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 62bba4ae 2020-10-13T12:12:34 Vulkan: Regression test for content defined of external images Bug: b/167275320 Bug: angleproject:4836 Change-Id: Iedbe1dfc8562c4c28477bf6a5a298620fcd48a67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2468457 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9580f3b4 2020-10-10T10:06:04 Test Runner: Accept GTEST shard environment vars. This makes interoperation with Chromium tests easier. For instance when triggering tests with scripts when using sharding. And also using the run/ wrapper scripts instead of run_gtest_angle_test. Bug: angleproject:5158 Change-Id: Ia5b1f94c02a081caf576615175791fff4e0d3fb3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2464030 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 707af6e5 2020-10-12T22:21:57 Suppress multisample "max samples" tests on Win/NV/GL. These produce low memory warnings on Quadro when run multi-process. Bug: angleproject:5162 Change-Id: Ibef3a8ea9119d923a538181387c30562d503bcb6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2466782 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill ad80b184 2020-10-13T17:15:59 Test Runner: List tests explicitly without GTest. This dramatically speeds up Android shards that use batches of hudreds of tests. Because ANGLE already has the test list, it no longer needs to call GTest with an enourmous gtest_filter. Bug: angleproject:5164 Change-Id: I28fee2f36c50006f2a35a4dcd90f44f8ebe4f78c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2468464 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi 426fa735 2020-10-13T11:51:50 Vulkan: Fix command reordering on release to external When releasing buffer/image to external, the necessary barrier was recorded on the "outside render pass command buffer". However, if the resource was used in the current render pass, that render pass should have closed before this, otherwise the barrier was reordered before it which is incorrect. Bug: chromium:1136367 Bug: chromium:1135792 Bug: angleproject:5002 Change-Id: I237d5e6bb46189a4ce61c2f4602e356955cc87a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2468456 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Brian Sheedy d5296d99 2020-10-13T12:45:25 Update IsARM64 Updates IsARM64 to return true if __aarch64__ is defined, as the current check only using _M_ARM64 only evaluates to true on Windows platforms. Bug: chromium:1132295 Change-Id: I4853012e077217162ee3439c17fe35dcc6157e71 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2468787 Commit-Queue: Brian Sheedy <bsheedy@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9e6bfaff 2020-10-13T14:32:08 Broaden Clear test failure to all OSX. ClearTest.ChangeFramebufferAttachmentFromRGBAtoRGB/ES2_OpenGL Fails on AMD and all vendors. Bug: angleproject:5165 Change-Id: Id98c14a695cd9b3dd0c5f57d77932908833f9406 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2468357 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Charlie Lao 4c6b4794 2020-10-12T12:37:29 Vulkan: TexSubImage3D using PBO should use correct layerCount The layerCount for 3D texture and 2DArray should be 1 if it does not have layers. Bug: b/170657065 Change-Id: I974ddda7c0eaa92da8033f15c682820e3d4eb32a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2466616 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Jamie Madill 336202d7 2020-10-09T16:43:32 Test Runner: Pass batch ID to child processes. This will let both the ANGLETest and dEQP test runners handle child processes correctly. The existing ANGLETest runner will reuse displays, and the dEQP test runner will write to a batch-unique filename. This solves the problem of the multi-process --bot-mode writing to the same file from multiple children simultaneously. Long-term it will be good to include the dEQP QPA files into the test artifacts. Also disables flushing after every log write when running as a child process. This hugely improves performance on machines with no SSD. Test: https://chromium-swarm.appspot.com/task?id=4f2b87c4f8234910 Bug: angleproject:5157 Change-Id: I226d24adf55e0f8b98e5a8e7947862e6906b4c40 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2464424 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 68bd685a 2020-10-10T22:58:41 Reland: "4 Vulkan content defined CLs." Reland "Vulkan: Avoid content restore by detecting no-op stencil" This relands commit 243d0f899e443cd931c78aba7489382dff79edbb. Reland "Vulkan: Restore at the end of RP if write-after-invalidate" This relands commit e5d52ac3b9a00656acdd912ee8cd62dd14784075. Reland "Vulkan: Invalidate/restore depth/stencil separately." This relands commit 61fa0878964a796f6d3b3c13bc3a3849403ecdbd. Reland "Vulkan: Move content-defined tracking to ImageHelper" This relands commit 2392e6b34c0ddfbfd7b4c3cb67323ba463e11a57. Reason for revert: Caused crashes in Fuchsia x64 and on ARM. Reland fixes content defined for external images. Original CL message: Content-defined tracking was done in render targets prior to this change. This had multiple drawbacks: - When a framebuffer attachment is changed (including the first time it's set), it's unknown whether the contents of the attachment is defined. - Invalidate takes effect at the end of render pass, at which point the render target objects may be gone. Attachment ImageHelpers are however correctly tracked. This change moves content-defined tracking to the ImageHelper itself, and tracks it per subresource. ImageHelper::onWrite() now receives the subresource that is being written, and marks it as having defined content. A future optimization can make use of this change to ImageHelper::onWrite to track "dirty" subresources. This can lead to the removal of unnecessary barriers when same-kind writes are done on different subresources of the image. See http://anglebug.com/3347#c15 Bug: b/167275320 Bug: angleproject:4836 Bug: angleproject:5159 Change-Id: If5c1ae7152657fd7c94db7d55bea4fb9ddf835ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2464825 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill d6b1c17b 2020-10-10T14:29:15 Revert 4 Vulkan content defined CLs. Revert "Vulkan: Avoid content restore by detecting no-op stencil" This reverts commit 243d0f899e443cd931c78aba7489382dff79edbb. Revert "Vulkan: Restore at the end of RP if write-after-invalidate" This reverts commit e5d52ac3b9a00656acdd912ee8cd62dd14784075. Revert "Vulkan: Invalidate/restore depth/stencil separately." This reverts commit 61fa0878964a796f6d3b3c13bc3a3849403ecdbd. Revert "Vulkan: Move content-defined tracking to ImageHelper" This reverts commit 2392e6b34c0ddfbfd7b4c3cb67323ba463e11a57. Causes crashes in Fuchsia x64 and on ARM. Original CL message: Content-defined tracking was done in render targets prior to this change. This had multiple drawbacks: - When a framebuffer attachment is changed (including the first time it's set), it's unknown whether the contents of the attachment is defined. - Invalidate takes effect at the end of render pass, at which point the render target objects may be gone. Attachment ImageHelpers are however correctly tracked. This change moves content-defined tracking to the ImageHelper itself, and tracks it per subresource. ImageHelper::onWrite() now receives the subresource that is being written, and marks it as having defined content. A future optimization can make use of this change to ImageHelper::onWrite to track "dirty" subresources. This can lead to the removal of unnecessary barriers when same-kind writes are done on different subresources of the image. See http://anglebug.com/3347#c15 Bug: b/167275320 Bug: angleproject:4836 Bug: angleproject:5159 Change-Id: I93d9dfe973caa7ce70aefa46b5b7d04a8637efb3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2464822 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill f3f80036 2020-10-10T11:08:55 Suppress more tests on Intel/GL/Mac. These tests crash/fail when reusing EGL Displays. Bug: angleproject:4992 Change-Id: I72dd61543cb055130836428751167e7528cf55af Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2464722 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 243d0f89 2020-10-08T21:54:45 Vulkan: Avoid content restore by detecting no-op stencil Previously, as long as stencil was enabled, it was considered that it is also being modified. This caused stencil invalidate to be undone in a number of situations, such as: - glEnable(GL_STENCIL_TEST); // with func/ops default - glDrawArrays(); - glInvalidateFramebuffer([GL_STENCIL_ATTACHMENT]); - glClear(GL_DEPTH_BUFFER_BIT); - Close render pass In the above scenario, invalidation of stencil was undone at the end of render pass. In this change, the following cases are considered read-only stencil: - Func = GL_NEVER, stencilFail = GL_KEEP - Func = GL_ALWAYS, stencilPassDepth* = GL_KEEP - stencilFail = GL_KEEP, stencilPassDepth* = GL_KEEP Note that while the above scenario is fixed for no-op stencil, a similar issue persists if stencil was not no-op. The reason stencil invalidate is undone in that case is due to the fact that it's assumed any command after the invalidate call will be a draw call that outputs to stencil, but that is not the case with the glClear call in this example. Bug: angleproject:4836 Change-Id: Ie2ea2d52b7c8ee2394f5456773a7ef434e2b2b16 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2461465 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi 6c1c3bd9 2020-10-09T11:46:04 Vulkan: Clear depth by shader if depthClamp not supported This will avoid breaking the render pass when clearing depth through clearWithDraw if the depthClamp Vulkan feature is not present. Bug: angleproject:4836 Change-Id: I845fd5074dd95f6896da89f9e119ebc5000a5688 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2462719 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi e5d52ac3 2020-10-08T14:26:22 Vulkan: Restore at the end of RP if write-after-invalidate If a depth/stencil attachment is invalidated, but subsequently drawn to in the same render pass, undo the invalidate when the render pass is closed. Adapted from https://chromium-review.googlesource.com/c/angle/angle/+/2386478. Bug: b/167275320 Bug: angleproject:4836 Change-Id: I17a35bfd692ddc403ceaa6ec44b5c4f16ff9eed6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2461464 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com>