src/libANGLE


Log

Author Commit Date CI Message
Charlie Lao 6793d50e 2021-10-06T15:48:55 Vulkan: Remove ImageHelper::setFirstAllocatedLevel and Add assertion ImageHelper::mFirstAllocatedLevel is set via ImageHelper::initExternal. There isn't a good use to set the mFirstAllocatedLevel when mImage is invalid, and semantically it is wrong to try to get mFirstAllocatedLevel or format while its storage is invalid (i.e., not allocated). This CL removes ImageHelper::setFirstAllocatedLevel() API all together and added assertion that image is valid when ImageHelper::getFirstAllocatedLevel and getActualFormat and various other get APIs whose value are set during initExternal call. Bug: angleproject:6532 Change-Id: I9c97f488b3e959443fec632540e7f0906a49dc13 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3209838 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 185e48a7 2021-10-06T18:53:08 Vulkan: Make TextureVk::mRedefinedLevels bitmask of gl::LevelIndex We have gl::LevelIndex and vk::LevelIndex. gl::LevelIndex means level index at OpenGL concept and is used in TextureVk code. vk::LevelIndex means already adjusted with baseLevel and is used by ImageHelper object. This mRedefinedLevel is gl::TexLevelMask type, but it actually is a bit mask of vk::LevelIndex right now. This is inconsistent and confusing. This CL changes it to bit mask of gl::LevelIndex to be consistent with the namespace of "gl". Bug: angleproject:6532 Change-Id: Ic88e373f70d3bd3e3fea676765c82fd0941e245c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3210726 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Steven Noonan 01341f94 2021-10-11T19:26:07 D3D11: implement EXT_clip_control This implements EXT_clip_control for the D3D11 renderer, so that I can use a reversed-Z depth buffer with ANGLE. Tested with angle_deqp_gles2_tests.exe --deqp-egl-display-type=angle-d3d11 --deqp-case=dEQP-GLES2.functional.clip_control.* and angle_end2end_tests.exe --gtest_filter=*D3D11* Bug: angleproject:6554 Change-Id: I1d11cd04a6654c28530b11104470f0cad0009abe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3218659 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny 8712495d 2021-10-05T11:56:32 Capture/Replay: Don't handle void pointers as const TL;DR: glReadPixels needs a non-const pointer if a pack buffer is bound, so change the code generation to keep TvoidPointer non-const and regenerate the entry points. Long version: When no pack buffer is bound, then in WriteCppReplayForCall param.readBufferSizeBytes is non-zero and the cast of the read buffer pointer is using the type passed by the parameter (TvoidPionter) to write the typecast by calling ParamTypeToString directly, which returns "void *". If. OTOH, a pack buffer is bound, then param.readBufferSizeBytes is zero, and the default WriteParamCaptureReplay is called. This autogenerated function forwards the call to WriteParamValueReplay by using an explicit type specification, and the autogeneration code was translating TvoidPointer to call WriteParamValueReplay<ParamType::TvoidConstPointer> which would then translate to "const void *" in the parameter type cast, and this would lead to a compilation failure, because the parameter must be a non-const pointer. Change the autogeneration code so that TvoidPointer is not forced to be a const pointer and regenerate the entry points. Bug: angleproject:6521 Change-Id: I673c77f803a284fb7dfc08a2e0918aebdf698194 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204959 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Shahbaz Youssefi 2ab7a178 2021-10-06T13:22:19 Vulkan: Remove suppressions for SPIR-V validation A bug in VVL produced validation errors regarding texel gather offset, but it seems to be fixed now. Bug: angleproject:6491 Bug: angleproject:6492 Change-Id: Ia20816ea0be65aa185a8ee89cf58edd33e452875 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3209086 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Lingfeng Yang 9ba5dcf6 2021-10-07T06:56:14 Vulkan: Fix inconsistency in half render area width/height The half render area rotation matrix should be removed. DrawableArea is constant over rotations. The frag coord rotation matrix is still needed because the frag coord generated by GPU is still rotated. Test: DISPLAY=:0 out/Debug/angle_deqp_gles3_rotate90_tests Using test config with: linux nvidia debug vulkan prerotation prerotation270 Test: Cuttlefish SwANGLE ./cts-tradefed run cts -m CtsDeqpTestCases -t dEQP-GLES3.functional.shaders.builtin_variable.fragcoord_xyz Bug: angleproject:6504 Change-Id: I37a6308fdb7586200b19a6138affc78c2c329a96 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212427 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Charlie Lao 6cb599f9 2021-10-06T13:07:27 Vulkan: Change dest to dst for consistency Cleanup only, no functional change. dst aligns better with src. Bug: angleproject:6502 Change-Id: I69821b1aae50a7ce647c7cc876468b6de309eec8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3208514 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 53388e54 2021-10-08T15:43:34 Vulkan: Remove VVL suppresions for VK_EXT_provoking_vertex Suppressions were added as ANGLE was using an unreleased extension. This extension is released and supported by VVL now. Bug: angleproject:4063 Change-Id: Ief23ac1ac3a3e6ecbd7b04a6b583302bbdf48398 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3213298 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4ad55d07 2021-10-05T15:45:05 Vulkan: Turn 1-view multiview FBOs into no-multiview When only 1 view is enabled, ANGLE continued to append a VkRenderPassMultiviewCreateInfo struct to the render pass. VVL produced an error when transform feedback was used in this case, quoting that multiview and transform feedback cannot mix. This change makes sure that 1-view framebuffers are threated as if they were not multiview. Bug: angleproject:6478 Change-Id: If079c9a052f822342a49a9cc880be2577a356b64 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3206269 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
angle-autoroll 4c23b817 2021-10-08T19:29:08 Roll vulkan-deps from d78bd80b30f6 to 651804d6bf55 (11 revisions) Suppressing SYNC-HAZARD-WRITE_AFTER_WRITE messages after https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3403 https://chromium.googlesource.com/vulkan-deps.git/+log/d78bd80b30f6..651804d6bf55 Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/c8cdbac705..b9ba4c5743 * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/8c0ee92eb6..aeffbbd6b9 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/7a6a52723b..51279399ea If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC ynovikov@google.com on the revert to ensure that a human is aware of the problem. To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Bug: angleproject:6550, angleproject:6551 Tbr: ynovikov@google.com Change-Id: I8b85fd82fc1042a5632027b8d6fada123533f276 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3214695 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Shahbaz Youssefi d134581b 2021-10-07T16:09:25 Vulkan: Remove SyncHelper::mEvent Now that inserting a sync object incurs a flush, we can use the serial to perform synchronization. Bug: angleproject:6464 Bug: angleproject:6481 Change-Id: I8c82a12855b6497861ce34854d165af82956b384 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212573 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Charlie Lao 74b2886f 2021-09-22T13:49:57 Vulkan: Try to use CPU to copy when preserving old buffer data When glBufferSubData is called, we may acquire a new buffer if buffer is still GPU busy. When this happened, we have to preserve buffer content if old buffer has valid data in it. Instead of always use GPU to do copy, this CL will check if GPU is not writing to the buffer, we will just use CPU to do the copy form old buffer to new buffer from the ranges outside subData, controlled by the feature flag preferCPUWhenPreservingBufferData. Bug: b/200067929 Change-Id: I42053104b2be8da5f399cca92e934254988f2fd8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3177322 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao e437c4ad 2021-09-22T09:15:19 Vulkan: Only preserve buffer data when BufferVk has valid data When we receive glBufferSubData call and GPU is still accessing the buffer, we have two code paths to update data. If subData is more than half of the entire buffer range, we choose to acquire a new buffer and use DMA to copy the rest of buffer that outside of subData range from the old buffer back to the new buffer so that existing buffer data is being preserved. Otherwise we stage subData to use GPU buffer to buffer copy later on when buffer is been used. The reasoning behind is to minimize the amount of data copy. The improvement here is that if previously app called glBufferData with null pointer, we really do not have any valid data in the buffer and there is no need to preserve the existing buffer data. This CL tracks whether buffer has any valid data or not and also put this into consideration when we pick which code path to go. We also use this information to avoid preserve the existing data in BufferVk::acquireAndUpdate Bug: b/200067929 Change-Id: I266dd93bed2d3c07e3a5af3e4e613e7f6023b393 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3176500 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 666fcf38 2021-10-08T12:19:15 Rename functions that overlap with Windows APIs. Bug: angleproject:6283 Change-Id: Ifcd9ea9e3bf729fd2066178eb9429050b2f10518 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212894 Reviewed-by: Bruce Dawson <brucedawson@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang e13bbea9 2021-10-07T15:52:51 Revert "Disable clearing textures for robust init on Mac." This reverts commit 33207313b2172525d7dc0526afd6d0aa51503bb1. Reason for revert: Spike in flush crashes Bug: chromium:1257538 Original change's description: > Disable clearing textures for robust init on Mac. > > Suspecting this path generates errors and hangs. > > Bug: chromium:1253356 > Change-Id: I0ef4a71578fa15631074f394d49e9878f3e301df > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3187131 > Commit-Queue: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Bug: chromium:1253356 Change-Id: I90630bdac02381511ae042b1ef91a729c7f859dc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212331 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Nico Weber 90403672 2021-10-08T09:50:47 Fix Wbitwise-instead-of-logical warnings `a && b` only evaluates b if a is true. `a & b` always evaluates both a and b. If a and b are of type bool, `&&` is usually what you want, so clang now warns on `&` where both arguments are of type bool. From what I can tell, in ANGLE it wasn't important if we evaluate both branches or not in the places where this fired, so I went with `&&` everywhere. Bug: chromium:1255745 Change-Id: I7ac6a12c37f28a872de1fe9b9b96abf43e39b21c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212889 Commit-Queue: Nico Weber <thakis@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 86fe5f29 2021-10-04T17:44:12 VVL: Re-enable vkCmdDraw and vkCmdDrawIndexed Re-enable the following VVL checks: VUID-vkCmdDraw-None-02690 VUID-vkCmdDrawIndexed-None-02690 Bug: angleproject:4768 Change-Id: I1469d21634b28c96e0ac2f2b8c4cd4dfec271d2e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3203176 Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Kyle Piddington fab88343 2021-10-07T15:02:35 WebGL Aquarium doesn't render with ANGLE Metal Blits should not be using the context's write mask, this leads to missed color information on blits. Bug: chromium:1257769 Change-Id: Iaf4ff00a727b1bec2424b4d3939fddd4c802a8ea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212644 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Kyle Piddington af5ea7f9 2021-10-07T12:47:41 PrimitiveRestart tests fail due to incorrect draw commands. Primitive restart draw commands were being encoded incorrectly. Single element ranges were being disregarded, and a maximum draw size was not being enforced when the index buffer was aliased / reused. Bug: angleproject:6535 Change-Id: I5affad4df46c4ab2b3702caa89b483ae685618a7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212629 Commit-Queue: Kyle Piddington <kpiddington@apple.com> Reviewed-by: Gregg Tavares <gman@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Charlie Lao a52f4032 2021-09-24T15:31:26 Vulkan: Skip releaseImage call when image is invalid releaseImage is only useful if image is already valid. Otherwise it is wasting CPU cycles to go through bunch of release calls that essentially doing nothing. Bug: angleproject:6014 Change-Id: I550b12bdc566cca699f6bf6662d176a01b2bce2e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3183800 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Cody Northrop 8770cefc 2021-10-04T13:47:23 Capture/Replay: Store enums to JSON as hex We're storing some enums in the per-trace JSON as decimal. This makes them difficult to read, i.e.: "DisplayDeviceType": 12810, "DisplayPlatformType": 13392, "DrawSurfaceColorSpace": 12425, If we instead convert them to hex, they are much easier to read and grep the source for. "DisplayDeviceType": "0x320A", "DisplayPlatformType": "0x3450", "DrawSurfaceColorSpace": "0x3089", Since JSON doesn't actually support hexadecimal values, this CL stores them as strings. Ideally we could take this a step farther and store the enum directly in JSON, but we have no facilities for converting a string back to an enum. Bug: angleproject:5133 Bug: angleproject:6515 Change-Id: I7b5d4dc8958d43c611da1fe98887e089f3d855b2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204135 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jonah Ryan-Davis 212f4592 2021-09-22T12:02:47 Enable direct-to-metal backend by default We are switching over to Apple's direct-to-metal backend instead of generating SPIRV in the metal backend. This CL enables the direct-to-metal generation by default, but the SPIRV backend is still accessible by overriding the feature directMetalGeneration. This CL comes with a change in test expectations to catch new failures and clean up newly passing tests. Bug: angleproject:6080 Change-Id: I4b10ad93c641b88857079a08fb45d3dc575d71f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3175664 Reviewed-by: Gregg Tavares <gman@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Charlie Lao b600d212 2021-09-24T15:05:34 Vulkan: Consolidate calls to respecifyImageStorageAndLevels respecifyImageStorage() calls respecifyImageStorageAndLevels with the same arguments that respecifyImageStorageAndLevels() could easily get from the mImage and TextureState. This CL get rid of respecifyImageStorageAndLevels and only uses respecifyImageStorage(). Bug: angleproject:6532 Change-Id: I388af1f1db0e3ce6c77475a03667fca451ab7013 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3183399 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 34ee74be 2021-10-06T15:00:49 Vulkan: Remove unused imageBaseLevel from TextureVk::setImageHelper We used to store baseLevel in ImageHelper object. Since then we have removed baseLevel from ImageHelper to make ImageHelper object able to be immutable for immutable textures. During that effort, the usage of baseLevel has been switched to retrieve directly from TextureState directly. This CL removes imageBaseLevel from the call. Bug: angleproject:4999 Change-Id: I6ea8a651ee81bebc8529ffaaaba22c3ce4f8ac90 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3209831 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Tim Van Patten 27e7c4dd 2021-10-01T13:43:57 Vulkan: Submit commands when Sync objects are initialized This CL calls ContextVk::flushImpl() after the sync object (VkEvent) has been created and initialized, so it has a valid Serial when it's waited on later. This change allows us to remove any tracking of pending sync objects, since all sync objects will be flushed and submitted by the end of SyncHelper::initialize(). Bug: angleproject:6464 Test: MultithreadingTest.CreateFenceThreadAClientWaitSyncThreadBDelayedFlush Change-Id: I47e7ced452727b434ed974368311fb3439a107c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3200274 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Lingfeng Yang 95a5bbd4 2021-10-04T13:38:43 Rename FullScreenQuad.vert to FullScreenTri.vert Bug: angleproject:6505 Change-Id: Iafe26ddce51862edcb405f7ca85997a7c3b26fa7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3203172 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lubosz Sarnecki 26f9041b 2021-10-06T16:50:47 DisplayVk: Always expose EGL_KHR_gl_colorspace. In the case of the sRGB color space the VK_EXT_swapchain_colorspace is actually not required to create a swap chain. The requirement should be lowered and VK_KHR_get_surface_capabilities2 should be used to enumerate if the color spaces from VK_EXT_swapchain_colorspace are available. Bug: angleproject:2514 Bug: b/201993125 Change-Id: Id0d8be05016d3833d14395f6638b85110615164b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3208689 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 4e22c2c3 2021-01-19T12:42:38 EGL: Merge DisplayAndroid/Gmb into DisplayEGL. These classes classes have a lot of duplicated code for no reason. DisplayGmb still needs more work. Bug: angleproject:5563 Change-Id: Ia3d3d7f0bd7c03b4ac1aece4369c49118426b9de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140498 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Maksim Sisov <msisov@igalia.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cody Northrop dba896cf 2021-10-04T22:17:48 Vulkan: Suppress modified device count warning This is a loader warning added in the following commit: https://github.com/KhronosGroup/Vulkan-Loader/commit/8daad81803f5ed9b36a172c299140dde7a8c4494 It fires on our corp laptops that contain multiple GPUs (one high-performance, one integrated). Most likely caused by Nvidia's Optimus Vulkan layer. It doesn't quite match the patterns of validation layers, but is straightforward to skip by searching for the beginning of the message. Bug: angleproject:6514 Change-Id: Ia93896364cae9e879faf068a100064f2edd04af2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204141 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 27a98cf4 2021-10-04T23:39:16 Vulkan: Allow debug labels inside render pass Debug groups and events were previously recorded to the outside-RP command buffer. With this change, they are inserted in the RP command buffer if render pass has started, or outside-RP command buffer otherwise. This creates a more accurate view of groups the application creates. Bug: angleproject:4597 Change-Id: If165bb88e3e66219bad2fe4acc1cc4653c97fb1b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3204591 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
Alexis Hetu 0364270d 2021-10-04T17:54:03 Alignment fix for IOSurface A wrong alignment was causing an issue in some tests. This CL doesn't fix any single WebGL conformance test entirely, but it fixes 564 of the 1292 failing sub-cases within the conformance/textures/webgl_canvas/* category. Bug: chromium:1099979 Change-Id: Id6051b24cb3c335d2f97f2c38c8de1dc7afde52f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3203790 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Jamie Madill ab7b5838 2021-10-05T10:58:10 GL: Remove old NVIDIA workaround. This affects drivers from ~ early 2017. These drivers should be fairly rare by now. Bug: angleproject:2059 Change-Id: I0d086ee00a0cc0c38ffdbf2294341fe832f80fd7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3206070 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill dccc0f8c 2021-10-05T09:22:19 Add docs for DXGI and D3D11 format tables. Bug: angleproject:1691 Change-Id: I7a07228853aaf8f1536b145657a737dcf3e0e1f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3205798 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gert Wollny f00f1009 2021-09-30T18:59:25 Capture/Replay: Fix readback of zero-sized renderbuffers Only read back the renderbuffer content if the renderbuffer has a non-zero size. Add a test to test the capture/replay in this case. Bug: angleproject:6425 Change-Id: I943804884f18a3a2b9de526309dd500de9dd6fd4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3197572 Commit-Queue: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill 4f0e7e7f 2021-10-04T14:50:10 Vulkan: Remove extraCopyBufferRegion workaround. Bug: angleproject:2838 Change-Id: I53ba3cf307f930ae9550d1bfee4650df6e826930 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3202475 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 2f1d503b 2021-09-16T21:49:14 Vulkan: Fix Vulkan secondary command buffers This change abstracts initialization, begin/end, reset and recycle of command buffers such that both Vulkan and ANGLE secondary command buffers are supported. Bug: angleproject:6100 Change-Id: I8c79764ac98b599fda08fe45cf8c4f0a6573f0f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2987873 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang ad8e4d99 2021-09-28T11:48:46 Remove EGL_ANGLE_flexible_surface_compatibility This extension has been superseded by EGL_KHR_no_config_context. Bug: chromium:1253930 Change-Id: Ie299c34baa84e9f47c73ddb5a0636536bf510d72 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3190612 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kyle Piddington 54d4bfe5 2021-09-28T17:27:57 Update ANGLE Metal to Webkit at Sept 29 2021 This commit merges changes from Webkit into ANGLE upstream. The following commits were used: Current: https://git.webkit.org/?p=WebKit.git;a=commit;h=e01d0bda8f4b7dc2fd834b92802d15d8c15735f Previous: https://git.webkit.org/?p=WebKit.git;a=commit;h=492f078198748e8ff248eea0bb979cf79e5f5adfj The following commits were merged in from the Webkit Repository: (Hashes from git://git.webkit.org/WebKit-https.git) 03ea44c78ce5665d4ec9add271260121cbc7bc6c Problems with drawElements in some conditions https://bugs.webkit.org/show_bug.cgi?id=230107 c8dc8e0c4d1109d39a62eb197b45e95132380290 ANGLE Metal: single-component swizzles do not compile https://bugs.webkit.org/show_bug.cgi?id=230472 7285dbaaf5af15877d6c332b30ef7a4d67225460 webgl-compressed-texture-s3tc-srgb.html fails on Intel+AMD Metal https://bugs.webkit.org/show_bug.cgi?id=229941 4c72f92967ecd2a095666fef431384c4f5f60fb4 fragcolor-fragdata-invariant.html fails https://bugs.webkit.org/show_bug.cgi?id=223317 cd943145467f54e5928793c0dd3dfa2313c007dd ANGLE Metal index buffer restart range cache could be maintained.. https://bugs.webkit.org/show_bug.cgi?id=227451 f075ff77e592eabd54dd659a8e13617cc5faedc8 ANGLE Metal infinities and NaNs generated with incorrect syntax https://bugs.webkit.org/show_bug.cgi?id=229439 5862073269122f4b2d43d96d3922757557755e86 [Metal ANGLE] Fix over-autorelease of rx::DisplayMtl::getMetalDeviceMatchingAttribute()... <https://webkit.org/b/229128> 85f797ad31db048cb82cbafd428ef77f0b839312 ANGLE Cocoa compiles.... https://bugs.webkit.org/show_bug.cgi?id=228987 a67918ba279ad4842b6ae84a79c3f1c0cdc35ace Avoid infinite recursion... https://bugs.webkit.org/show_bug.cgi?id=228978 d341f67de0033adcf1ec6373ace6a54b06c4a031 Cherry-pick ANGLE: Revise WebGL's shaderSource validation https://bugs.webkit.org/show_bug.cgi?id=228951 1e2714d981e97de8234ba055570dfdf56e8b6944 3.5 MB system-wide footprint impact due to thread-locals... https://bugs.webkit.org/show_bug.cgi?id=228240 d32e5cca34081997d32504b0b56c18b9703ff3be Build Default Metal library offline https://bugs.webkit.org/show_bug.cgi?id=227333 33702279faccfd4c8d1c8a6d549925f9ca9a4e8f WebGL2 demo doesn't work due to failing compilation.... https://bugs.webkit.org/show_bug.cgi?id=226865 0a075885d242db38c4e435a6597173dc3b082173 rAF driven WebGL submits excessive amount of GPU work... https://bugs.webkit.org/show_bug.cgi?id=227059 f38a92b3e7c17efda269caa7066e7ffe2f828e72 WebGL shader link error in iOS 15 beta: "Internal error..." https://bugs.webkit.org/show_bug.cgi?id=227723 98d48f011d561531470d97f26a022767b5452fb7 REGRESSION (r279466): [Big Sur] webgl/1.0.3/conformance &... https://bugs.webkit.org/show_bug.cgi?id=227596 Bug: angleproject:6471 Change-Id: I07166d0dc4b5c3579d98353485b3245b81c7b882 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3194322 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Mateusz Przybylski 076366cc 2021-10-01T23:42:04 Revert "VertexArray: Don't syncState on Buffer map/unmap." This reverts commit 3d429f597fde950e789ca3684abbabd540157773. Reason for revert: This change is causing crashes in ANGLE stack. Original change's description: > VertexArray: Don't syncState on Buffer map/unmap. > > Map/unmap calls are now treated like contents change events. Similar > to BufferSubData calls. > > Bug: angleproject:6371 > Change-Id: Ie0a4c521ffdedfa723d47eddd21c6f68dde044ac > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3187811 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Tim Van Patten <timvp@google.com> Bug: angleproject:6371 Change-Id: I57480a18f3c70a1bf2a539e3047402c71802655d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3200288 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Ian Elliott 98a6e0a4 2021-10-01T15:06:07 Suppress VUID-RuntimeSpirv-OpImage-06376 Bug: angleproject:6492 Change-Id: I5963506164ae70edf4f2e77401dc86794157f8f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3200277 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Gregg Tavares fca9de6f 2021-09-29T14:59:06 Fix Metal backend not clearing stencil buffer If you had a depthstencil buffer the stencil portion was not being cleared. Bug: angleproject:6389 Change-Id: Iad3f12ae627bc12625d959f9a52fdb1dcb8c9bc3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3198800 Commit-Queue: Gregg Tavares <gman@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Ian Elliott 12e5a7db 2021-10-01T13:52:37 Suppress VUID-RuntimeSpirv-OpImage-06377 Bug: angleproject:6491 Change-Id: I0e9f8908077ea10685b7796b2c42086ae6520d05 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3200275 Reviewed-by: Ian Elliott <ianelliott@google.com>
Jamie Madill 043120ee 2021-09-29T15:56:46 Capture/Replay: Allow disabling program trimming. The ANGLE_CAPTURE_TRIM_ENABLED variable disables program trimming when set to 0. This is useful for trace validation, which expects the GL state vectors to be identical. Bug: angleproject:5133 Change-Id: I3ab41de80af7b223c4cb8a1b7e14f049717305fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193417 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Kenneth Russell da3db87e 2021-07-06T14:00:58 Upstream latest changes to Metal backend from Apple to 7/1/2021 This CL merges in the ANGLE changes between these two WebKit commits: https://git.webkit.org/?p=WebKit.git;a=commit;h=8648b353ab1d7730438c2e08319e1a4d64982c31 https://git.webkit.org/?p=WebKit.git;a=commit;h=166e4924a52971d6a32ad48247a439b16c00e062 Include provoking vertex buffer out of bounds fix from https://bugs.webkit.org/show_bug.cgi?id=230107 Fix bad merge of resetting of dirty bits, breaking DepthStencilFormatsTest.DepthTextureRender test and perhaps others. Disable GL_APPLE_clip_distance when the direct-to-Metal compiler is active. It can not yet handle the gl_ClipDistance array. Disable use of rectangular textures for IOSurfaces. Metal can bind IOSurfaces to 2D textures, and this was passing all tests in the SPIR-V Metal backend. Introducing rectangular textures breaks the SPIR-V Metal backend, and the tests currently fail on the direct-to-Metal backend. Fix several bugs with ProvokingVertex, which was causing both the SpirV and Direct backends to incorrectly draw indices. (https://bugs.webkit.org/show_bug.cgi?id=230107) Skip the following tests on the Metal backend which is still failing RobustResourceInitTestES3.BlitDepthStencilAfterClearBuffer GLSLTest_ES3.GLVertexIDIntegerTextureDrawArrays/ES3_Metal With these changes, angle_end2end_tests again runs to completion. Bug: angleproject:6395 Change-Id: I3cc58f531426a95fc8f177a4ad87f56c1855a546 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3167010 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Jamie Madill 0b4508e5 2021-10-01T11:49:52 Add script to automatically download extension data. The script uses the 'bb' and 'swarming' tool to download build info and artifacts. See the script for more info. Bug: angleproject:6379 Change-Id: I65444771a69dc2f6eee39f6ba8d471fdd8ca2cff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3198737 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Shahbaz Youssefi 2a8be9de 2021-10-01T01:26:19 Vulkan: OES_shader_multisample_interpolation is now conformant This extension was not conformant due to an imprecision in the GL spec which is now rectified. See: https://gitlab.khronos.org/opengl/API/-/issues/149 The OpenGL CTS has been fixed here: https://gerrit.khronos.org/c/vk-gl-cts/+/7862 Bug: angleproject:6190 Change-Id: I0c37332939f70291a5f76ca36fa9f24b179ce414 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3197513 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi a097ee2e 2021-09-27T15:18:02 Vulkan: Fix clearing external images with emulated format External images may already have data, and clearing them due to their format being emulated is incorrect. This change makes sure that only the emulated channels are cleared. The RGBXDataPreservedAHB test is based on one contributed by Jason Macnak <natsu@google.com>. Bug: b/192315789 Change-Id: Ibc8953fdac356f2a62a5b46512a51e1916b4a1b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193416 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
angle-autoroll 3de06bcd 2021-09-30T21:46:13 Roll vulkan-deps from 788a2f62acbe to 11c6360dd46f (144 revisions) https://chromium.googlesource.com/vulkan-deps.git/+log/788a2f62acbe..11c6360dd46f Changed dependencies: * glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/e0771b5d4c..581897f462 * spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/c2500e504d..97a438d214 * spirv-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git/+log/6cae8216a6..ae217c1780 * spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/7e860e3831..ba4b390c36 * vulkan-headers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git/+log/9e62d02763..e500c7c809 * vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/20cf221e72..edccdb3444 * vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/642da192c8..a956d1a0e5 * vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/1e6ed74d5d..6d54fa0fe0 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/vulkan-deps-angle-autoroll Please CC ianelliott@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:6478 Change-Id: I28a46296e5b3590601a61707f438d8b238be3ff6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3198645 Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Jamie Madill 35708f98 2021-09-30T11:54:34 Merge extension support docs. We previously had an existing document in doc/ExtensionSupport.md. This merges the new SupportedExtensions.md into the old location and includes a bit more info on EGL extension support. Bug: angleproject:6379 Change-Id: Ibb60a9e9db9200abe609383531131903ca698e60 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3197770 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 4cb34637 2021-09-29T16:40:11 Vulkan: Fix crash in async queue The change also fixes a regression introduced by 2d79918fdb0276cdb57488d72abd803250f962a3 which caused a segfault when async queue is used. Unfortunately, due to anglebug.com/6437, async queue tests are not run on the bots at the moment. This will be fixed in a follow up change. Bug: angleproject:6436 Change-Id: I3c2f63549149fbd9c9ab61107e98e8015cdb1c77 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193419 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 0004ecc2 2021-09-22T13:39:55 Write GL info to test artifact in end2end_tests. These will show up as glinfo.json in the "cas outputs" of the shard that runs these tests. We currently have information for Pixel 4, NVIDIA and Intel Win/Linux, and SwiftShader Windows. GLES 1.x extensions are treated separately. Some WebGL/Mac-only/D3D-only extensions show as unsupported anywhere. In order to capture artifacts on Android, we use a render test output parameter. Bug: angleproject:6379 Change-Id: I560b219b5a586cdbb68d272090f38eedc76aba20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3176780 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill 3d429f59 2021-09-27T14:27:31 VertexArray: Don't syncState on Buffer map/unmap. Map/unmap calls are now treated like contents change events. Similar to BufferSubData calls. Bug: angleproject:6371 Change-Id: Ie0a4c521ffdedfa723d47eddd21c6f68dde044ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3187811 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill cf8c5678 2021-09-17T13:16:36 Vulkan: Don't sync VAOs after BufferSubData calls. We still need to syncState after buffers that contain converted attributes are updated. Includes a perf regression test. Bug: angleproject:6371 Change-Id: I54227fc43e7b3fe79072da7783dab0177ccb0486 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3182706 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill b930b9d3 2021-09-08T09:08:28 Capture/Replay: Remove redundant "capture" from label old: trex_200_capture_context1_frame001.cpp new: trex_200_context1_frame001.cpp The 'capture' word wasn't really adding any useful information. Take it out so the filenames are a bit shorter. Bug: angleproject:5133 Change-Id: Ibd7d47df2aa1f24a641c5d5b2a6dd14d6ce240e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149370 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Aditya Kushwah 5e029401 2021-09-28T15:49:20 Add a new variant to the labeling API. This CL will create a new variant which will take both internal name and KHR debug name and send them over to the D3D. This will help us capture KHR debug label better and also prevent for the cases where ANGLE was dropping the KHR labels on the floor when calling the label API right after the commands like glTexStorage2D, glTexImage2D etc. Bug: chromium:1164111 Change-Id: Ifebe8df5435a34692c601c5c35fddc1911bf9d0c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3192180 Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Alexis Hetu 4647e4c5 2021-09-27T17:03:05 SwANGLE copy to IOSurface This CL performs a buffer to image copy on bindTexImage and an image to buffer copy on a releaseTexImage on MacOS in order to copy from/to an IOSurface which has an arbitrary internal layout. It also changes the internal format used by GL_BGRX8_ANGLEX to GL_RGBX8_ANGLEX in order to have an internal format which accurately represents the {GL_RGB, GL_UNSIGNED_BYTE} format with the color channels in the correct order. Bug: chromium:1209250 Bug: angleproject:4369 Change-Id: I62b66c7055f8ba8a4c943abeb2e35a3825efc392 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3169472 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Brandon Schade 84bf49a5 2021-09-27T15:20:22 Vulkan: Fixed an issue with primitives generated query The primitives generated query does not work with rasterizer discard, as such rasterizer discard is disabled with the beginQuery call and re-enabled with the endQuery call. The issue is that previously rasterizer discard was not being disabled until ContextVk::resumeRenderPassQueriesIfActive in some cases. This led to cases where primitives generated query did not work. The fix is to insure all beginQuery calls disable rasterizer discard when primitives generated query is active. Added the following end2end test to cover the failure: TransformFeedbackTestES32.MultiPrimitivesGeneratedVsRasterizerDiscard Bug: angleproject:5557 Tests: KHR-GLES32.core.tessellation_shader.tessellation_invariance.invariance_rule* Change-Id: I7e1a0a0bc4a3100349c2c5dbdbe6becd1e0dda29 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193100 Commit-Queue: Brandon Schade <b.schade@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 30878d2a 2021-09-24T09:23:56 Buffer: Notify contents changed in a separate observer list. Buffer contents changed will only notify VertexArray. Also this list is separated from the other observers because in the future most of the time we won't need to notify the VertexArrays when buffer contents changed, to avoid iterating over a large list of VertexArray observers on simple SubData calls. Bug: angleproject:6371 Change-Id: I6142a5757868caf33dc6594a1975f817f80553e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3182701 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Cody Northrop 5db7885f 2021-09-28T17:16:40 FrameCapture: Fix GLES1 VertexArrayState Broke recently when adding support for ES3.1 semantics. GLES1 traces are hitting the loop below, generating BindVertexBuffer. Test: Zillow MEC (GLES 1) Bug: b/199919700 Change-Id: Ibe83d1b4009b00f891903cae889449d42e9f510b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3192990 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Alexis Hetu c0aa6108 2021-09-17T16:22:55 Add new GL_RGBX8_ANGLEX format Currently, IOSurface objects using {GL_RGB, GL_UNSIGNED_BYTE} are natively represented with GL_BGRX8_ANGLEX, which we use instead of other RGBA formats in order to avoid issues when a canvas uses 'no alpha': https://source.chromium.org/chromium/chromium/src/+/main:third_party/swiftshader/third_party/angle/angle/src/libANGLE/renderer/vulkan/mac/IOSurfaceSurfaceVkMac.mm;l=44 This unfortunately causes some other issues because of the implicit RGB <-> BGR conversion like type mismatches in subresource updates. This CL adds a new type, RGBX8, which will be usable by IOSurface objects and which behaves exactly like the BGRX8 format with the B and R channels flipped. Bug: chromium:1209250 Change-Id: I345eadc8addd05a0964cae30d89c20005479e37b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3188910 Commit-Queue: Alexis Hétu <sugoi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Ian Elliott dff5c752 2021-09-28T11:27:06 Suppress VVL error: *InterfaceTypeMismatch Suppress VVL error: UNASSIGNED-CoreValidation-Shader-InterfaceTypeMismatch Bug: angleproject:6442 Change-Id: I1d5412a1be7cba0b3571225d3f3d94c72349742f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3191390 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Geoff Lang 20be5bed 2021-09-28T11:31:50 Expose EGL_KHR_no_config_context on more backends. EGL_KHR_no_config_context can be exposed on any backend that supports EGL_ANGLE_flexible_surface_compatibility Bug: chromium:1253930 Change-Id: Iec75ce944fc463a8c476579234be77028f74113b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3190611 Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 33207313 2021-09-27T10:45:17 Disable clearing textures for robust init on Mac. Suspecting this path generates errors and hangs. Bug: chromium:1253356 Change-Id: I0ef4a71578fa15631074f394d49e9878f3e301df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3187131 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Cody Northrop 3719c172 2021-09-20T17:33:14 FrameCapture: Filter program setup calls This CL adds filtering to shared setup calls based on whether a resource is used during the frame capture. Calls that are filtered out will not be written to SetupReplayContextShared. This eliminates setup for unused resources. This has become critical for apps like Fortnite that compile tens of thousands of programs before running any frames. This can take multiple minutes to perform before rendering a frame. To achieve this, we do the following: - Add an active status to every call (default to TRUE). - Mark setup calls for tracked resources to FALSE during MEC. - During the run, track for any use of the resource, and mark its setup calls back to TRUE. - Enable tracking for ShaderPrograms. Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Change-Id: I5070297d339de3b80f870640e8955077a2bc20aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3150387 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi 5e182d2c 2021-09-23T14:29:48 Add traces to CommandBuffer Additionally, use CommandBuffer's `reset` instead of direct Vulkan call. Based on patch by Igor Nazarov <i.nazarov@samsung.com> Bug: angleproject:6401 Change-Id: Ib473ed2fd33ebb68852d4f4e7776a8e484ac8610 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3179770 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi d9882db5 2021-04-16T21:47:25 Vulkan: Destroy unused resources in a timely manner Deletion of garbage that's eligible for immediate cleanup is currently delayed until the next submission. Fix this by checking if garbage can be freed immediately and deleting it right away if it's not used. Some missing retain() calls needed to be added to semaphore operations in order to avoid freeing resources in use by a memory barrier. Based on a change by spang@chromium.org Bug: angleproject:4628 Change-Id: I034c24d7631c973b4546952f7718a0cd4114763f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2832002 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi dc99db91 2021-09-16T21:45:35 Vulkan: Allow Vulkan secondary CBs to count their commands This is used by render pass related code to determine if some command has been issued since a previous event. With ANGLE SecondaryCommandBuffer, the memory pointer where the commands are being written to are used for this purpose. For Vulkan secondary command buffers the code simply increments a counter. Bug: angleproject:6100 Change-Id: I85320f8453bd3325793df85aabde3d42b1eeb22a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3167214 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill cebca7c2 2021-09-24T07:55:38 Texture: Ignore buffer contents changed events. Texture doesn't need to care when its attached buffer gets different contents via a SubData call. This CL updates the BufferVk logic to ensure that SubData calls trigger a storage changed notification when there's a new storage, and otherwise Texture can ignore SubData calls. Will make it easier to split "contents" changed notifications to their own event, for optimizing Vertex Buffer updates. Bug: angleproject:6371 Change-Id: I4f15ad3ad2da5d838bd51fb065184b7344b188d8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3181562 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Shahbaz Youssefi eb1d5ca5 2021-01-29T15:34:49 Vulkan: Enable sync validation Based on a change by tobine@google.com Bug: angleproject:5290 Change-Id: Ieae1be5a29f0dcb3ea8aaa04e77fc402380a08b1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3171432 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 2d79918f 2021-09-16T16:43:53 Vulkan: Pass command pool around Preparatory work for re-enabling support for Vulkan secondary command buffers. The command pool being passed around is not yet used. Additionally, the work to allocate, initialize, reset and recycle command buffers has been refactored to a helper class for better abstraction. The CommandBufferHelper class now holds a pointer to the pool it was allocated from for clean up. Each ContextVk has its own command pool, where Vulkan secondary command buffers are allocated from. The command pool that CommandProcessor had was unused and is removed by this change. Bug: angleproject:6100 Change-Id: I0d4fa6a76ef06e88779145ffe9c613518a8eb390 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3167213 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com>
Ian Elliott 78393614 2021-09-21T19:14:15 Vulkan: Fixed bugs about VK_SUBOPTIMAL_KHR Image Acquire result This change fixes the following bugs in rx::WindowSurfaceVk with VK_SUBOPTIMAL_KHR Image Acquire result: - Bug in acquireNextSwapchainImage() method: - If VK_SUBOPTIMAL_KHR returned from vkAcquireNextImageKHR(), the method simply returns since the result, and vk::DeviceScoped<vk::Semaphore> acquireImageSemaphore, will be destroyed. However, acquireImageSemaphore can't be destroyed because it is already used by the Presentation Engine. - Bug in initializeImpl() method: - Method allows VK_SUBOPTIMAL_KHR as successful result. However, acquireNextSwapchainImage() will not finish, leaving incomplete state. Attempting to use the framebufer will cause ASSERT/Crash. Solution: - Changed acquireNextSwapchainImage() method to ignore VK_SUBOPTIMAL_KHR result. - Remove checks for VK_SUBOPTIMAL_KHR from Acquire in other places. This solution was chosen, because it is simplest, and VK_SUBOPTIMAL_KHR is properly handled in the computePresentOutOfDate() method. Patch authored by Igor Nazarov <i.nazarov@samsung.com> Bug: angleproject:6401 Change-Id: I90bef7871c3bdcf28240a034927d5b2c705f4367 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3174729 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten a1b829dd 2021-09-22T18:29:08 Vulkan: Retain src buffer in acquireAndUpdate() It's possible for acquireBufferHelper() to garbage collect the original (src) buffer before copyFromBuffer() has a chance to retain it, so it must be retained before then. Previously, we were relying on the retain calls in copyFromBuffer() to be sufficient. However, there is a race condition when the asynchronous CommandProcessor is enabled, since the garbage could be freed before copyFromBuffer() has a chance to retain the buffer (and allow destroyIfComplete() to skip destroying the object). For the full context, see the comment chain here: https://chromium-review.googlesource.com/c/angle/angle/+/3146319/16..24/src/libANGLE/renderer/vulkan/BufferVk.cpp#b833 Bug: angleproject:5971 Change-Id: I7c812069343fdad948189d696bfebab8da68c1a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3179866 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Jamie Madill 49ac15a5 2021-09-20T11:29:01 Optimize VAO bindings. This CL makes the XFB binding tracking WebGL-only. That will speed up VAO binding changes in non-WebGL considerably. Also has a few inline micro-optimizations that may not have a large effect. Bug: angleproject:6371 Change-Id: Ib0a26a3b956dcd6ff78626e5cd6514b46270d882 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3170116 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 68c0da83 2021-09-15T12:00:08 Vulkan: Inform frontend when new buffer is allocated When a buffer is mapped with GL_MAP_INVALIDATE_BUFFER_BIT while it's currently in use, the Vulkan backend will allocate a new buffer, map it, and return the pointer to the new buffer. This was missing a call to inform the frontend that a new buffer was allocated, causing the old buffer data to be accessed in subsequent draw calls. The fix is to add a onStateChange(angle::SubjectMessage::SubjectGhosted) call when the new buffer is allocated, to inform the frontend. Bug: angleproject:5971 Bug: angleproject:6396 Test: TextureBufferTestES31.MapTextureBufferInvalidateThenWrite Change-Id: I9984d1049ab4d6a2066f4440fc710c9b93ff6ab8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3163244 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten 9158436e 2021-07-31T18:26:16 Vulkan: glMapBuffer(): Create new buffer (Buffer Ghosting) When glMapBuffer() is called, if the buffer is in use but not being written to by the GPU: 1.) Create a new buffer. 2.) Copy the contents of the old buffer into the new buffer. 3.) Map the new buffer and return the pointer. Creating a new buffer prevents ending the renderpass and flushing the commands to allow the in-use buffer to be mapped. This change increases Idle Heroes performance from 40FPS to 125FPS. Bug: angleproject:5971 Test: VulkanPerformanceCounterTest.MappingGpuReadOnlyBufferGhostsBuffer Test: BufferDataTest.MapWriteArrayBufferDataDrawQuad Test: BufferDataTest.MapWriteArrayBufferDataDrawArrays Change-Id: I1d433d179f9f5110a948f191c5aedda5397acac8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3065799 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Tim Van Patten 57d59e83 2021-09-07T17:41:11 Vulkan: Add ResourceWrite to track Read and Write Access vk::Resource currently only tracks accesses in general, not which type of access is being performed. This CL adds the new class ResourceWrite to track whether the access is a Read or Read/Write access and when the access completes. This allows a follow-on CL to know when a buffer is being written to by the GPU or if the GPU is only reading from a buffer. Tracking write accesses to buffers is required when attempting to "Ghost" (duplicate) GPU-read-only buffers to prevent breaking the render pass when the CPU maps the buffer memory. Bug: angleproject:5971 Test: ComputeShaderTest.ImageBufferMapWrite Change-Id: I965e3e75730719ccce77334744ae4feae33c6101 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3146319 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 06c73b3d 2021-09-21T13:37:29 Vulkan: Lift DS feedback read-only suppression. This is now fixed upstream in the spec and the VVL. Bug: angleproject:4975 Change-Id: I6938bae49c982cc4f366c01ab10aedcaa784f972 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3173252 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Kyle Piddington 7dd2361b 2021-09-17T15:43:22 Metal: ANGLE Metal AutoObjCPtr == nullptr comparison is inverted Port the fix from Webkit for this inverted comparsion Unify the nullptr type throughout all functions Bug: angleproject:6351 Change-Id: Id856af31c9eea5cc79993c3454e452d1c14d0d0e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3169436 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Le Hoang Quyen <le.hoang.q@gmail.com> Reviewed-by: Gregg Tavares <gman@chromium.org>
Kyle Piddington f6616c71 2021-09-14T17:42:22 Reimplement transform feedback on direct-to-Metal backend Connect the Transform Feedback code generation from Webkit ANGLE to the shader specialization code. Bug: angleproject:6393 Change-Id: I090c44c6ee97e8e0af8c38433bfb74c2080784f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3161455 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Gregg Tavares <gman@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
YuxinHu a09dca68 2021-09-20T23:40:28 Fix app trace heap buffer overflow During runMidExecutionCapture(), we need to update mMaxAccessedResourceIDs[idType] for idType==ShaderProgram, so that we have enought slot in gShaderProgramMap2 to store the temp shader we create in GenerateLinkedProgram(). Changes in this CL: 1.Renaming Jamie's mMaxAccessResourceIDS array update function updatePreCallResourceCounts() to updateResourceCounts(). 2. Adding updateResourceCounts() to Cody's setup call post processing function scanSetupCalls(). In GenerateLinkedProgram(), we add the temp shader create call with its' tempShaderID into the shareGroupSetupCalls. After that we will run the function scanSetupCalls(), where we will be able to loop through the tempShaderID and update the mMaxAccessResourceIDS[ShaderProgram] with the correct count. Bug: angleproject:6398 Change-Id: Iee78b3b7c1908a90ee8456476902f5e52e4615dc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3172005 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Kyle Piddington 59d31ea6 2021-09-17T17:43:13 Metal Direct: TinyDepthStencilWorkaroundTest.DepthTexturesStick Change code to rewrite attributes by searching for both the standard, and rewritten name. We will match with any vertex attribute variables that experienced a renaming during shader processing Bug: angleproject:6388 Change-Id: Ia6f5b87092990e9df42f1dbb87a8bf393ba50c4c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3169438 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Jamie Madill 9184973f 2021-07-21T08:28:30 Add GetCompressedTexImageANGLE to ANGLE_get_image Includes front-end support for reading back compressed texture images. Back-end support is incomplete and will be implemented in a future CL. CL authored by cnorthrop@google.com. Bug: angleproject:6177 Change-Id: I1482b15e5ffec6120f09f51b2718cdbef07c93c8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3163359 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 0babcb08 2021-09-14T10:49:06 FrameCapture: Scan Setup instructions The ability to add calls from a multitude of locations rather than a centralized spot has become a useful feature. But some locations were updating the max read buffer size via updateReadBufferSize, while others weren't. Rather than force everything to call a central spot for tracking, add post process scanning of Setup calls to handle updates. This is already done for frame calls in maybeCapturePreCallUpdates. Test: Fortnite MEC Bug: b/180418810 Bug: angleproject:5658 Change-Id: I51d3a39ea40073d2dca50339ef4b38712b81f4ca Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3160500 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi 458389f2 2021-09-02T22:41:40 Vulkan: Support Linux dma-bufs This change adds support for EGL_EXT_image_dma_buf_import and EGL_EXT_image_dma_buf_import_modifiers on top of Vulkan's VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier. Bug: angleproject:6248 Change-Id: I581987f88e9ddcf351dc721f499f63912dca05f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3145610 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Tim Van Patten c85d9a19 2021-09-07T11:41:10 Destroy all unreferenced Contexts resources during terminate() When eglTerminate() is called, all of the Contexts that the Display owns need to be destroyed if they are not referenced by (current to) any Threads. This also requires a change to Display::releaseContext(), to remove the recursive call to Display::terminate() that could occur when releasing the Contexts during terminate(). Bug: skia:12413 Test: EGLContextSharingTestNoFixture.EglTerminateMultipleTimes Change-Id: Ibd0a3e22725d29875c4089bdaae47c98e5084f35 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3144146 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Rafael Cintron c8e13389 2021-09-16T16:25:11 Fix memory leak in StreamProducerD3DTexture.validateD3DTexture Calling ID3D11DeviceChild::GetDevice will add a reference to the D3D device before passing it to the caller. Hence, we need to release the device when we're finished using it. Bug: angleproject:6403 Change-Id: I68cc8f64b3f9866cd6f1105334d86ee6774da52c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3167013 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Jamie Madill 1af5c46c 2021-09-14T14:40:49 Move JsonSerializer from libANGLE to common. This lets us use the serializer from outside of libANGLE. The plan is to use it to serialize a list of supported extensions from the tests. Bug: angleproject:6379 Change-Id: Ib7b64cca32e733e342b80f893d3752318089f0c2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3163361 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi bf7fac12 2021-09-16T21:18:04 Vulkan: Fix getting driver priority with async command queue Bug: angleproject:6245 Change-Id: Id6b6f83177dde85867685f814c5bdef4a5c97367 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3167212 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Gregg Tavares e3e221f9 2021-09-15T14:28:34 Make backend ObjC struct match uniform block The structure defined in ContextMtl.h needs to match the uniform block defined in DriverUniform.h/.cpp. XCode will sometimes assert when they don't match. Bug: angleproject:6394 Change-Id: I8f3fe2bcc6ad9b96dec2c3e77cdb99515736cdc1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3163861 Commit-Queue: Gregg Tavares <gman@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jamie Madill 23b16743 2021-09-14T10:29:14 Fix compilation when disabling D3D back-ends. Common code areas weren't compiling when disabling combinations of the D3D9 and D3D11 back-ends. With manual testing this fixes various combinations of angle_enable_d3d9/d3d11/gl. Bug: angleproject:5925 Change-Id: Ie14f2b4c6169cf96c662e7ae6999751007d9adb0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3162836 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 653973e4 2021-09-15T14:06:34 Capture/Replay: Disable when no arguments specified. Bug: angleproject:6397 Change-Id: I09fb060044fd280f50a3b8ce71d8d455dbd4985f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3163360 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott 44935e79 2021-09-15T15:23:10 Change top-level AGI debug marker to not show parameters Per AGI usability request. Bug: b/195784227 Change-Id: I674848944e9bc9eb9da1369c977b9d7d624a0788 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3163480 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxin Hu dc08289d 2021-09-13T16:48:58 Add a cubemap array texture validation In ValidateTexture3DDestinationTarget(), Check if the cube map array extension is enabled if the TextureTarget is CubeMapArray. This helps catch the missing extension error earlier in ValidateES3TexImage3DParameters(), and the program won't crash when getTextureByType() is called later in ValidateES3TexImageParametersBase(). Bug: angleproject:6152 Change-Id: I2f1876f81688e7eef68bdf99276a3a9fafa224da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3161440 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Jamie Madill b918b1c6 2021-09-10T16:44:59 Auto-generate GLES extensions. Uses the data from registry.xml combined with gl.xml to produce the necessary header and source file with the strings map. Also updates the list of supported extensions. Several extensions were missing from the supported extensions map. ARB_sync and NV_robustness_video_memory_purge require some specific tweaks to get the generator to accept them as gles extensions. Also includes a generate markdown file that lists supported exts. Bug: angleproject:6379 Change-Id: I95bd589aa31a62b4a008de24408c7823a49023ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3157418 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Gert Wollny 9121a79d 2021-09-14T11:57:32 Capture/Replay: Don't set CWD and pass path information instead With that we avoid complication when evaluating the module path that is used to load the test modules. Fixes: 2f3e4db838068584a0c15653cb07893683a55300 Capture/Replay: Serialize trace metadata to a JSON file. Bug: angleproject:6385 Change-Id: If4e348237d9b0e99e404f49b28dddba1ac50ef92 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3157907 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Jamie Madill e84b0154 2021-09-13T16:04:20 Update extension boolean names. This is in preparation for auto-gen, which uses a simple naming scheme. This fixes the bool names to be totally consistent with the extension names. Bug: angleproject:6379 Change-Id: Ia212449be04accb0e4f006b55b1813ab4481fa0b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3157417 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop fc9457fb 2021-09-15T10:46:55 Revert "Vulkan: Suppress CoreValidation-Shader-InterfaceTypeMismatch" This reverts commit 62c70b449d2ef5e195c583f7a7627f14587a51dc Reason for revert: VVL bug fixed upstream https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/3264 Original change's description: > Vulkan: Suppress CoreValidation-Shader-InterfaceTypeMismatch > > New VVL error causing test failures. > > Bug: angleproject:6382 > Change-Id: I61801828c0879a33502a2d9582e2e7da1bdb9250 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3155571 > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Brandon Jones <bajones@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:6382 Change-Id: I41202a1d577fb6d9204ead32df134e6c5b3a1a86 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3163238 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 1ca1589f 2021-09-13T10:56:58 Give GLES extension bools a vendor suffix. This is in preparation for auto-generation which will give all of these bools suffixes. Bug: angleproject:6379 Change-Id: I7e3f6c9b644c41a2165e6bf7b62d661fd352a250 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158503 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9ada074a 2021-09-10T16:18:19 Move capability values from gl::Extensions to gl::Caps. Several extensions stored extra information in the wrong structure. Move them to the Caps structure in prepraration for auto-generating the Extensions struct. Bug: angleproject:6379 Change-Id: If5643b72039e299cb0f7c49591d13b3c7cd8a36c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158403 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Gert Wollny 54e89a1b 2021-09-02T16:48:42 Capture/Replay: handle param reading of glGetUniformuiv Enable the test that was fixed by this. Bug: angleproject:6108 Change-Id: I0bd46a85c2337e3c1a236954c8f131df12c499b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140155 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Gert Wollny <gert.wollny@collabora.com>