src/common


Log

Author Commit Date CI Message
Brian Osman a62204c3 2022-06-15T14:01:17 Guard all imports of wayland.gni with angle_use_wayland Fixes build errors in Skia Bug: angleproject:7434 Change-Id: I99e8ab741c0128f7327fec08e04979edde4f19e9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3707852 Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Brian Osman <brianosman@google.com>
Roman Lavrov c2220ecf 2022-06-13T16:11:25 Always log FATAL, ERR messages is_debug=false in gn args together with angle_assert_always_on=false (default) results in no logs in logcat, which makes sense if you know that logs are conditional on ANGLE_ENABLE_ASSERTS but is pretty confusing when running into this accidentally. Bug: None Change-Id: I67499a34cd3d02fd7d17680a4cb62d263883b301 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3703619 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com>
Antonio Caggiano 543dcdde 2022-06-09T10:50:41 GN: Wayland build overrides Introduce //build_overrides/wayland.gni to simplify the management of the wayland dependencies. Bug: chromium:1327041, angleproject:7409 Change-Id: I24cd7c0aa1025acbfe681afb07ccb384ff52bb62 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3697998 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Dan Field 59476401 2022-06-10T10:52:57 Missing include for std::toupper This fixes the Windows build in Flutter's build environment. Bug: angleproject:7430 Change-Id: Ia53c81dbd8c28e1122e3cf680c7c48b62ecb9caf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3704236 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Dan Field <dnfield@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop ce78f5f8 2022-05-10T09:10:30 Capture/Replay: Reset default uniforms Extend resource tracking to include default uniforms. They are tracked per location, per program. Setup for defaulft uniforms is unchanged, but Reset now includes a section like this: glUseProgram(gShaderProgramMap[6]); UpdateCurrentProgram(6); glUniform1uiv(gUniformLocations[gCurrentProgram][0], 1, reinterpret_cast<const GLuint *>(&gBinaryData[30518768])); glUniform1uiv(gUniformLocations[gCurrentProgram][1], 1, reinterpret_cast<const GLuint *>(&gBinaryData[30518784])); glUseProgram(gShaderProgramMap[9]); UpdateCurrentProgram(9); glUniform4fv(gUniformLocations[gCurrentProgram][1], 15, reinterpret_cast<const GLfloat *>(&gBinaryData[30518960])); glUniform4fv(gUniformLocations[gCurrentProgram][16], 3, reinterpret_cast<const GLfloat *>(&gBinaryData[30519200])); glUniformMatrix4fv(gUniformLocations[gCurrentProgram][20], 2, GL_FALSE, reinterpret_cast<const GLfloat *>(&gBinaryData[30519248])); ... Test: Animal Crossing MEC, Star Wars KOTOR MEC Bug: angleproject:7307 Bug: angleproject:7353 Change-Id: Ic344767f5dd4ffc38c15ed6bf81a7d1daf274a7b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3657474 Reviewed-by: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 0408b129 2022-06-08T22:20:32 Overlay: Support globbing Makes it less tedious to specify multiple widgets. In particular, it also makes it possible to select many widgets on Android through `adb shell setprop debug.angle.overlay` which has a hard limit of 92 characters for the property. Bug: angleproject:5881 Change-Id: I93bd166cd3dbf8f87e5c6a5fce3f86ebb3e379a3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3697437 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Faye Zhang 06ff0e3c 2022-06-06T15:29:16 Implement GL_EXT_base_instance Added new extension GL_EXT_base_instance to registry_xml.py and auto-generated the entry point function calls for the following functions introduced by the extension: * GL_DrawElementsInstancedBaseVertexBaseInstanceEXT * GL_DrawElementsInstancedBaseInstanceEXT * GL_DrawArraysInstancedBaseInstanceEXT Bug: angleproject:6983 Change-Id: I36167faf3ca98e42acf787dbf09ee7052e15e358 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3691952 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Faye Zhang <ffz@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Mark Lobodzinski 7fb021b0 2022-05-12T16:19:14 Reland "Add Vulkan backend support for texture labels" This is a reland of commit 1afb80587e302e2ce9a901a69fd66e5ef98a73b6 Added check to ensure vkSetDebugUtilsObjectName fcn ptr is valid before use. Fixes failures on mac-swangle-chromium-try-x64. Original change's description: > Add Vulkan backend support for texture labels > > Add onLableUpdate support for textures in the Vulkan backend. > > Bug: b/229105865 > Change-Id: Id9e5b2b81352e97b7843a63f27709739005dc2f3 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645854 > Reviewed-by: Ian Elliott <ianelliott@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Ian Elliott <ianelliott@google.com> Bug: b/229105865 Change-Id: I994da6db2771671c204e4ab01c69912c1be4a48f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3674296 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Ian Elliott <ianelliott@google.com>
Charlie Lao d655ad29 2022-05-31T14:20:16 Vulkan: Add tests for FramebufferCache growth bugs When texture attached to FBO gets respecified, we shouldn't keep growing FramebufferCache. When texture attached to fbo get glTexParameteri(GL_TEXTURE_SWIZZLE_R) call with the same value, we should also not destroy/recreate framebuffers (in fact should not recreate VkImageView). We ran into this usage pattern on surfaceflinger. When texture attached to fbo get glTexParameteri(GL_TEXTURE_SWIZZLE_R) call with different value, we should also not destroy/recreate framebuffers (in fact should not recreate VkImageView). We ran into this usage pattern on surfaceflinger. Bug: b/234769934 Bug: b/234602034 Change-Id: I9fc881486f95cc3da843f50fa0a8cdcbfd4fc625 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3681081 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Shahbaz Youssefi 28b4c378 2022-05-27T15:45:59 Vulkan: Pipeline creation feedback in perf counters Bug: angleproject:5881 Change-Id: I42917cab3c97abb50a14035972a96728dcb990b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3672851 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi b0d75fb5 2022-05-31T16:55:23 Vulkan: Use 64-bit counters Some upcoming counters don't fit in 32 bits. Bug: angleproject:5881 Change-Id: I2de8a603cabdb5f7417c29d5f37a50899485d6d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679488 Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill 1ce69722 2022-05-18T13:05:22 Vulkan: Track used command buffers in ResourceUse. The list of command buffers to ResourceUse will replace tracking resources in a CommandBufferHelper. Currently the two tracking methods live side-by-side, and the old method will be removed in a future CL. Bug: angleproject:5664 Change-Id: Ia04d77e72c508e10b549db8c8dd5f0472e4edc83 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3656069 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya b267c009 2022-05-26T16:36:31 Add support for comparison operator in FlatUnorderedSet Overload operator== so FlatUnorderedSet objects can be used as values in a hashmap. Tests: FlatUnorderedSet.Comparison* Bug: angleproject:5033 Change-Id: Ica746adf87f7c603789593e726051e4562d6a931 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3671826 Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Kai Ninomiya 7ad48b84 2022-05-26T00:23:35 Revert "Add Vulkan backend support for texture labels" This reverts commit 1afb80587e302e2ce9a901a69fd66e5ef98a73b6. Reason for revert: Null-dereference crash starting here: https://ci.chromium.org/ui/p/chromium/builders/ci/mac-swangle-chromium-x64/26323/blamelist (see angle blamelist) Crash reason: EXC_BAD_ACCESS / KERN_INVALID_ADDRESS Crash address: 0x0 Process uptime: 24 seconds Thread 0 (crashed) 0 0x0 rax = 0x0000011c0113c000 rdx = 0x0000011c09094590 rcx = 0x0000000000000006 rbx = 0x0000011c0e2a0000 rsi = 0x00007ffedfc11500 rdi = 0x0000011c01378010 rbp = 0x00007ffedfc11540 rsp = 0x00007ffedfc114f8 r8 = 0x0000000000000006 r9 = 0x0000000123a6ccc4 r10 = 0x0000011c011018d0 r11 = 0x00007ffdbc1a4834 r12 = 0x0000000000000006 r13 = 0x0000011c090944b0 r14 = 0x0000011c0e34c000 r15 = 0x00007ffedfc11550 rip = 0x0000000000000000 Found by: given as instruction pointer in context 1 libGLESv2.dylib!gl::Context::objectLabel(unsigned int, unsigned int, int, char const*) + 0x156 rbp = 0x00007ffedfc116a0 rsp = 0x00007ffedfc11550 rip = 0x00000001357b38e6 Found by: previous frame's frame pointer 2 libGLESv2.dylib!_GL_ObjectLabelKHR + 0xa5 rbp = 0x00007ffedfc116f0 rsp = 0x00007ffedfc116b0 rip = 0x000000013578e7e5 Found by: previous frame's frame pointer 3 Chromium Framework!gpu::gles2::GLES2DecoderPassthroughImpl::DoBindTexture(unsigned int, unsigned int) + 0x1ea rbp = 0x00007ffedfc11780 rsp = 0x00007ffedfc11700 rip = 0x000000011e7dcd4a Found by: previous frame's frame pointer Original change's description: > Add Vulkan backend support for texture labels > > Add onLableUpdate support for textures in the Vulkan backend. > > Bug: b/229105865 > Change-Id: Id9e5b2b81352e97b7843a63f27709739005dc2f3 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645854 > Reviewed-by: Ian Elliott <ianelliott@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Ian Elliott <ianelliott@google.com> Bug: b/229105865 Change-Id: I5a5e00084e1320a486c43fec9d41b9ae6cb2b1db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3669657 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Faye Zhang c608df69 2022-05-23T17:19:02 Code Cleanup In Debug.h, we unconditionally set UNREACHABLE_IS_NORETURN to 0. Since UNREACHABLE_IS_NORETURN is only used in #if directives and it is always false, we can remove all uses of UNREACHABLE_IS_NORETURN. Bug: angleproject:6134 Change-Id: I3aa88d802099d70990eae697d4f056a3f650b48d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3661376 Commit-Queue: Faye Zhang <ffz@google.com> Auto-Submit: Faye Zhang <ffz@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Faye Zhang <ffz@google.com>
Mohan Maiya 84a0b462 2022-05-20T15:51:11 Vulkan: Bug fix in GL_QCOM_shading_rate A default value of _1x1 for mShadingRate interacts badly with sample shading state on some vendors. Instead set the default to Undefined and return early in such cases. Bug: angleproject:7172 Change-Id: If0a280090e6611817d2f5d75929ef2b654ddb186 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3658245 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mark Lobodzinski 1afb8058 2022-05-12T16:19:14 Add Vulkan backend support for texture labels Add onLableUpdate support for textures in the Vulkan backend. Bug: b/229105865 Change-Id: Id9e5b2b81352e97b7843a63f27709739005dc2f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645854 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi 7c83a363 2022-05-16T22:22:44 Vulkan: Dynamic state for rasterizer discard enable Interaction with primitives generated query are tested by those tests added in https://chromium-review.googlesource.com/c/angle/angle/+/2976181 Bug: angleproject:5906 Change-Id: I0ab9f54995504be770a93bf13337a5ffe20bf7eb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3651582 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Hailin Zhang b7474d0a 2022-04-28T14:44:54 D3D11: Add GL_EXT_texture_buffer support tested: deqp-gles31.exe --deqp-gl-context-type=egl --deqp-case=dEQP-GLES31.functional.texture.texture_buffer.* passed Bug: b/206367167 Change-Id: I31a6f84bd701a737735a6bac2f4eef780c24a979 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3639722 Commit-Queue: Hailin Zhang <hailinzhang@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 20820bb4 2022-05-13T10:50:47 Make BitSetArray constexpr Bug: angleproject:5906 Change-Id: If1ccacfc81e3e01b4bdbd10d47cf4ec860e3fe0b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645494 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Antonio Caggiano 36f5e6ce 2022-05-03T12:08:35 Vulkan: Fix DRM to GL format conversion Do not ignore unused alpha channel for a proper conversion from DRM to GL to Vulkan format. Bug: angleproject:7217 Change-Id: I598ae030005e7375b36c6456864150aa8aaf50c1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3624139 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4e5da2d2 2022-05-11T13:58:07 Vulkan: Dynamic state for cull mode Bug: angleproject:5906 Change-Id: I3d7b888e7999d4892ff71d636ea16a2edcf7a27f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3642800 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov 03ccd9cc 2022-05-13T16:12:11 Revert "Vulkan: Flush texture updates more often" This reverts commit 8bb7c35c2159de2fa9e9a008679c692edd4402a6. Reason for revert: crashes tests in linux-rel Example: https://ci.chromium.org/ui/p/chromium/builders/try/linux-rel/1012030/overview Also possible flakiness https://anglebug.com/7308 Repro: out/Debug/bin/run_blink_web_tests fast/canvas/OffscreenCanvas-2d-drawImage.html Original change's description: > Vulkan: Flush texture updates more often > > * Added a pointer to the previous texture in ShareGroupVk so we can > flush the texture updates once we switch to a new texture. > > * We check if mip levels 0 and 1 are conformant in terms of > size, format and number of samples. > > * As a part of size check, we also check depths if the texture > target is either 3D, 2D array, or cube map array. For the former > two, they have to conform to mip scaling similar to width and > height. For the latter, the depth represents layer-faces and does > not change for mipmaps. > > * Added a test to ensure the pointer to the previous texture is > deleted when the corresponding texture is deleted, so the old value > is not accessed by a future mutable texture. > > * Added tests to make sure the mutable texture is uploaded with > the appropriate mip level attributes, and not uploaded in cases of > size/format inconsistencies, incompleteness, and no base level. > > Bug: b/202744914 > Change-Id: I9c2c1af87a8a49e75d3ad25523436b0cd51a7e81 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3606329 > Reviewed-by: Charlie Lao <cclao@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Bug: b/202744914 Change-Id: Id51fd4c76d058aa5100ec58ba618098c8f614253 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3645493 Auto-Submit: Roman Lavrov <romanl@google.com> Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Lingfeng Yang <lfy@google.com>
Amirali Abdolrashidi 8bb7c35c 2022-03-23T19:14:54 Vulkan: Flush texture updates more often * Added a pointer to the previous texture in ShareGroupVk so we can flush the texture updates once we switch to a new texture. * We check if mip levels 0 and 1 are conformant in terms of size, format and number of samples. * As a part of size check, we also check depths if the texture target is either 3D, 2D array, or cube map array. For the former two, they have to conform to mip scaling similar to width and height. For the latter, the depth represents layer-faces and does not change for mipmaps. * Added a test to ensure the pointer to the previous texture is deleted when the corresponding texture is deleted, so the old value is not accessed by a future mutable texture. * Added tests to make sure the mutable texture is uploaded with the appropriate mip level attributes, and not uploaded in cases of size/format inconsistencies, incompleteness, and no base level. Bug: b/202744914 Change-Id: I9c2c1af87a8a49e75d3ad25523436b0cd51a7e81 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3606329 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Antonio Caggiano 2fb58a95 2022-02-15T15:40:23 Re-land: "Vulkan: GBM platform" Add support for GBM platform by implementing a Display with no WSI extension. Re-land fixes build script, including GBM Vulkan backend whenever ozone platform GBM is enabled. Bug: angleproject:7217 Change-Id: Icbf2d034b700e22ab4c351e479f472d65d832ebe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3637562 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 0db4c39b 2022-05-09T20:02:58 Revert "Vulkan: GBM platform" This reverts commit 825d5b2c59b463253c82262a0c50f75d28860db4. Reason for revert: Fails link rolling into Chrome crrev.com/c/3635013 https://ci.chromium.org/ui/p/chromium/builders/try/chromeos-amd64-generic-rel/1149608/overview https://ci.chromium.org/ui/p/chromium/builders/try/linux-chromeos-compile-dbg/1013047/overview https://ci.chromium.org/ui/p/chromium/builders/try/linux-chromeos-rel/1189185/overview Original change's description: > Vulkan: GBM platform > > Add support for GBM platform by implementing a Display with no WSI > extension. > > Bug: angleproject:7217 > Change-Id: Ia9089131c5984dfdd926d2f85f1c218df1e84d9a > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3596042 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:7217 Change-Id: Ia8a4ca753a8f18d6a2c607010b5afabf6a78fe9a No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3636059 Auto-Submit: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Antonio Caggiano 825d5b2c 2022-02-15T15:40:23 Vulkan: GBM platform Add support for GBM platform by implementing a Display with no WSI extension. Bug: angleproject:7217 Change-Id: Ia9089131c5984dfdd926d2f85f1c218df1e84d9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3596042 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Peter Kasting 2ce60b52 2022-05-05T08:23:07 Fixes for C++20 support. * The compiler grew smart enough to warn about value changes due to casting to float inside floatToNormalized(). Make it smart enough to realize this isn't a problem by using constexpr if. * Types on both sides of a comparison operator should be the same. * Structs with user-declared constructors are no longer aggregates. Provide a constructor and call it. * std::result_of<F(x)> is gone, use std::invoke_result<F, x> instead. Bug: chromium:1284275 Change-Id: I6487bb18c65837a6d7d2661f65e097dc6a7605b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3630478 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Auto-Submit: Peter Kasting <pkasting@chromium.org>
Doug Horn e6662832 2022-04-28T17:30:41 Re-land fixing of commit ID for Android builds. Android infra does not store the .git directory alongside the checked out code, instead using a gitdir directive to point elsewhere. This caused the commit_id script to fail, which could cause issues with disk-backed program caches on updates when the serialization format changes. Tested: 1) Verified that cached binaries do not load when the ANGLE hash is "unknown hash". This fixes a bug where the serialization format could change but we are unaware of a change because the hash is technically the same. 2) Verified that Android infra correctly generates the git hash. Bug: b/206109660 Test: Run script on Android infra, verify hash is gathered properly. Change-Id: I114fc8edb9459592cab45c6726f9d946cf6d17d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3615014 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Doug Horn <doughorn@google.com>
Jamie Madill f9729598 2022-04-28T16:36:50 Revert "Fix commit ID gathering on Android builds." This reverts commit 1835e5d895f7f75435c2eddf3f87a88ef534c237. Reason for revert: Breaks Skia integration in linkImpl. Original change's description: > Fix commit ID gathering on Android builds. > > Android infra does not store the .git directory alongside the > checked out code, instead using a gitdir directive to point > elsewhere. This caused the commit_id script to fail, which > could cause issues with disk-backed program caches on updates > when the serialization format changes. > > This CL also makes it a build failure to fail to get the commit id, > and removes the ANGLE_DISABLE_PROGRAM_BINARY_LOAD fallback (which > was broken anyway due to not being used anywhere). > > Bug: b/206109660 > Test: Run script on Android infra, verify hash is gathered properly. > Change-Id: Ie28dc9278b6fbd3dd4f09232c0a88d602fca6980 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3604710 > Commit-Queue: Doug Horn <doughorn@google.com> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: b/206109660 Change-Id: I64ac0831a46b9e1ff2e2738624650d67d0609f3c No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3615009 Commit-Queue: Jamie Madill <jmadill@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Doug Horn <doughorn@google.com>
Doug Horn 1835e5d8 2022-04-25T14:42:31 Fix commit ID gathering on Android builds. Android infra does not store the .git directory alongside the checked out code, instead using a gitdir directive to point elsewhere. This caused the commit_id script to fail, which could cause issues with disk-backed program caches on updates when the serialization format changes. This CL also makes it a build failure to fail to get the commit id, and removes the ANGLE_DISABLE_PROGRAM_BINARY_LOAD fallback (which was broken anyway due to not being used anywhere). Bug: b/206109660 Test: Run script on Android infra, verify hash is gathered properly. Change-Id: Ie28dc9278b6fbd3dd4f09232c0a88d602fca6980 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3604710 Commit-Queue: Doug Horn <doughorn@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 4aae5815 2022-04-22T13:21:03 Vulkan: Overlay widgets for submission statistics Bug: angleproject:7084 Change-Id: I68e69bda43862f9f2711c25a28dbe4745c19a45c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3602832 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 02b96848 2022-04-21T16:32:31 Vulkan: Add support for GL_QCOM_shading_rate Layer GL_QCOM_shading_rate over VK_KHR_fragment_shading_rate Test: ShadingRateQcomTest* Bug: angleproject:7172 Change-Id: I3f040dbfad3906facd4349937fed2ce9a464b824 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3599874 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Mohan Maiya ea76cb0f 2022-04-21T15:52:39 Vulkan: Add entry points for GL_QCOM_shading_rate Bug: angleproject:7172 Change-Id: I837d2697d95c44f47a2fab7411cfd87a4ec65e90 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3599873 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Shahbaz Youssefi 2db718ed 2022-04-21T23:13:02 Vulkan: Skip empty submissions A number of places in ANGLE perform an implicit flush; eglSwapBuffers(), glFenceSync() etc. Sometimes these flushes are unnecessary because there is nothing to submit. Additionally, an application may unnecessarily issue glFlush() with nothing recorded. In this change, empty command buffers are automatically not submitted, optimizing these unnecessary flushes away. Bug: angleproject:7084 Change-Id: Iecb865b6b9ef8045dfecda7b5221874f7031b42e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600837 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexis Hetu dc1b7029 2022-04-20T15:41:40 Disable MSAN in the Vulkan loader When trying to reproduce MSAN errors locally, a number of MSAN errors pop up inside the Vulkan loader. This CL disables MSAN checks around function calls which end up inside the Vulkan loader, which similarly had been done for LSAN before, and allows local MSAN builds to reach actual MSAN errors inside SwANGLE. Bug: chromium:1313907 Change-Id: I8c0b841f03ce57cecb01e34b4f6edab398d2924e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3598011 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Jamie Madill ff8a9f6a 2022-04-14T15:15:16 Vulkan: Renaming "ShaderBuffers" to "ShaderResources". This will match the functionality as we expand the descriptor set cache to non-buffer resources. Bug: angleproject:6776 Change-Id: I5597d074beea7d3b464802a2db9bcc2fcf84ca6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3583359 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi fcec6904 2022-04-13T14:18:06 Generate feature variable names from display names The json file now only contains the feature display name. The variable name is automaticaly derived. For consistence with Chromium and other Chromium-based projects, the display name is now always snake_case, and that's what's specified in the json files. This also makes camelCase variable name generation trivial (as opposed to the other way around). Feature overrides now accept both snake_case and camelCase names to ensure compatibility with existing scripts. This is done by removing _ and comparing override names with feature names in lower case. Bug: angleproject:6435 Change-Id: I0b6ed2bbf5c312bc4f4be7b3c7d55dbaca2a9886 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3584630 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill c82513af 2022-04-14T05:04:11 Add FastMap class. We can use this class in a few cases where we can know that the integer key index won't exceed a fixed small boundary. Bug: angleproject:4524 Bug: angleproject:6776 Change-Id: Ic380e1ce8f4dc591504603ade376d9b1e8a3c1c4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3579865 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1b94c585 2022-04-10T15:09:38 Revert "Vulkan: Switch loader to new driver files env var." This reverts commit 1f6123d55467c2af7c67405c0101a6f327b76225. Reason for revert: Seems to break ANGLE on fuchsia loader: https://ci.chromium.org/ui/p/chromium/builders/try/fuchsia_arm64/1123629/overview Original change's description: > Vulkan: Switch loader to new driver files env var. > > VK_DRIVER_FILES replaces VK_ICD_FILENAMES. > > Bug: angleproject:7095 > Change-Id: I949ac9a8f375240b6c6068825eccc645f81b0185 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3522821 > Reviewed-by: Ian Elliott <ianelliott@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:7095 Change-Id: I5b7e094b08d76b9c14adb4acb3b59e4cfb7a28fa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3580980 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Amirali Abdolrashidi 3cea7fcc 2022-03-16T16:33:43 Split Context ResourceUseList to RP Commandbuffers * Added mResourceUseList to each command buffer helper in an effort to move mResourceUseList away from ContextVk. * submitFrameImpl() renamed to submitCommands() * Moved the functions acquireResourceUseList() and onRenderPassFinished() in submitCommands() to the submitFrame functions calling it. Bug: angleproject:7103 Change-Id: I2487d5b86ea0a4d504f283aa7128501651317fe0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3531368 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Jamie Madill 1f6123d5 2022-03-14T11:40:05 Vulkan: Switch loader to new driver files env var. VK_DRIVER_FILES replaces VK_ICD_FILENAMES. Bug: angleproject:7095 Change-Id: I949ac9a8f375240b6c6068825eccc645f81b0185 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3522821 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Amirali Abdolrashidi 607d398e 2022-03-14T16:32:21 Vulkan: Optimize resolve of multisample swapchains * Resolves the multisampled image if the last render pass draws into the default framebuffer. * Added test to check the number of resolves in the optimization subpass (credit: Xinyi He) * Added test to check the number of resolves outside the subpass. * Added disabled test to see if the subpass resolve works. Bug: angleproject:6762 Change-Id: I86a8db3387851ab97d5f7a3d8a0ff26961254c14 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3523062 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Antonio Caggiano 7b0f6318 2022-03-30T14:16:02 Vulkan: Wayland include directories Add wayland include directories from vulkan headers build overrides to those vulkan dependent targets. Bug: angleproject:6902 Change-Id: I8699fdf18e9b44b04a580b6ea31493d740756cf0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3568377 Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Mohan Maiya 3bdbfbf8 2022-03-25T16:34:51 Vulkan: Adjust border color Some border color tests used to fail due to either unclamped color values or not accounting for depth, stencil or luma formats. We now adjust the border color value according to the sampler's format. Test: dEQP-GLES31.functional.texture.border_clamp.* Bug: angleproject:3577 Bug: angleproject:6213 Change-Id: Ib38ce2374622bfafde69fe3fa2d7227d60043954 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3551895 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 36a051d8 2022-03-28T22:53:38 Vulkan: Move mid-RP color clear to loadOp if content undefined Instead of using vkCmdClearAttachments, if the color attachment has not been written to, modify the loadOp of the currently open renderpass to CLEAR. This is an adaptation of commit cfe5a1735a934cc83133bb6c69d19aa27278a270 The difference with that commit is that, with the prior changes that added tracking of color attachment access in the render pass, this change is greatly simplified by being able to immediately know if clear can be moved to the beginning of the render pass. Bug: angleproject:5048 Change-Id: I72b3613ad08ff869b71aced7e1f4e9be916d7b49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3557815 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 53e432fe 2022-03-28T15:18:51 Vulkan: Track LOAD/STORE_OP_NONE in perf counters Bug: angleproject:5048 Change-Id: I52ed67e7a5c173dd1a7202fd6d4a1c484e79ea75 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3556367 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 7a85d114 2022-03-25T15:01:17 Use [[nodiscard]] on RAII classes Scoped* classes provide an RAII way of adding cleanup/restore state/etc in a robust way. Unfortunatley, it's very easy to mistakenly leave the variable name, leading to the destructor being called immediately instead of at the end of the scope: { ScopedX(parameters); // instead of ScopedX x(parameters); // Code here is run after destructor } The [[nodiscard]] attribute, if specified on the ScopedX class would lead to a warning (turned to error with -Werror). This change does that for classes named *Scoped* in ANGLE. Bug: chromium:1103817 Change-Id: I65c9922c9b4eba1f9c033e093fe8fe534648ab62 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3552092 Reviewed-by: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Cody Northrop e3c44919 2022-03-24T11:32:10 Debug: Add angle_enable_trace_events Include the following GN arg to print all GLES and EGL commands: angle_enable_trace_events = true Bug: angleproject:7126 Change-Id: I78eb061c10ed519d6a0b0357eea11567d1cfb518 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3551656 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 04680183 2022-03-24T11:09:39 Capture/Replay: Fixes for Car Chase This CL contains two fixes: * Add GL_PATCHES to list of PrimitiveMode names * Use FramebufferTextureLayer for 3D and Cube textures Bug: angleproject:3662 Bug: angleproject:7125 Bug: b/218314686 Change-Id: Ia97d8221cb78ef6e895156b5a474483d570d6ab5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3551096 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Shahbaz Youssefi c8f86c21 2022-03-22T17:40:43 A handful of clear-related tests Credit Tim Van Patten <timvp@google.com> Bug: angleproject:5048 Bug: angleproject:5194 Change-Id: I00eccf1049118c3fba3c2c560c781cf09cf23362 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3543732 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 730c1271 2022-01-07T13:41:08 Vulkan: Submit queue more often for texture data Outside command buffers should be flushed more often in order to prevent the texture data accumulation just before the first render pass when they are referenced. * Added a tracker next to copyBufferToImage() for texture size (in ContextVk). When its value passes kMaxBufferToImageCopySize, the outside command buffer operations should be submitted and the tracker would be reset. Currently, the threshold value is set to 1 << 28 = 256M. * Added a variation of submitFrame() to be used in outside command buffer submission. The main difference is that it copies mResourceUseList into GetShareGroupVk() rather than move it. * Refactored the two functions into submitFrameImpl(). * Added a helper function to submit the outside command buffer. * Added explicit copy functions for ResourceUseList and SharedResourceUse. The counter in the copied object is incremented by 1. * Added a test to make sure submitting the outside command buffer does not break the render pass. Bug: angleproject:6354 Change-Id: Ia1d4f857fcbd06934609c94622ccbf675b3b1c72 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3379231 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Yuly Novikov 01be7a83 2022-03-21T21:20:54 Fix Skia build Missing include in crrev.com/c/3191194 Bug: angleproject:6440 Change-Id: I77c08a60fb42026104b75044187f681a30c0d42a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3537513 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill b2c01ac4 2021-09-28T12:57:45 Report process memory in perf tests. Bug: angleproject:6440 Change-Id: Ifdd4389266e3ac55963a3069d437c631bf73f72a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3191194 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Kimmo Kinnunen 9637185c 2022-03-10T15:38:13 Add ForceGPUSwitch to EGL_ANGLE_power_preference eglHandleGPUSwitch() does not work with WebKit sandbox profile. The root cause is that we do not know the primary display, and as such we do not know which GPU drives this. Add eglForceGPUSwitchANGLE(display, gpuIDHigh, gpuIDLow). This lets the caller figure out the GPU in another process. Then the caller can just set the GPU in the sandboxed process. Add tests that are disabled by default until the runner and the infrastructure supports running the tests with automatic switching enabled. Bug: angleproject:7092 Change-Id: I316ee431156596effbdb89659a5e24291719a204 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3516274 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Jamie Madill e8ee847d 2022-02-23T12:25:39 Vulkan: Add UpdateDescriptorSetsBuilder. This helper class encapsulates the vkUpdateDescriptorSets caching. As part of the refactor, we switch passing a ContextVk to passing a vk::Context with some mutable variables. This helps encapsulate ContextVk. Since we use the perf counters in many places, this CL moves the perf counters to vk::Context, so we can access them everywhere. Refactoring change only. Bug: angleproject:6776 Change-Id: Id529962b2f425bece6f9b3bd0cd1698c692e58cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3484980 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano 8fb0a633 2022-03-15T18:11:27 Vulkan: VkFormat/DrmFourCC Define macro and header dependency in BUILD.gn when Vulkan is enabled. Bug: angleproject:7065 Change-Id: Ifbd9091425212689d4284b2bc46d3fe59267509c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3526654 Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano 0c272c67 2022-03-15T15:42:39 Vulkan: VkFormat/DrmFourCC Add functions to perform a lossy conversion from VkFormat to DrmFourCC and to convert a VkFormat to one or more DrmFourCC formats. Compilation only happens when Vulkan is actually enabled. Bug: angleproject:7065 Change-Id: I97c4585b9032e1ff4f773c3c427541bf7f6117fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3525754 Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0f2482ff 2022-03-15T14:09:11 Revert "Vulkan: VkFormat/DrmFourCC" This reverts commit daef95775f7b6dc3bdb0a40662fcb36b68ebf501. Reason for revert: Breaking roll into Skia due to missing Vk headers. Original change's description: > Vulkan: VkFormat/DrmFourCC > > Add functions to perform a lossy conversion from VkFormat to DrmFourCC > and to convert a VkFormat to one or more DrmFourCC formats. > > Bug: angleproject:7065 > Change-Id: Iecccea6a89fbf8adeb50c3cb0c737ad3aedf7c62 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3495123 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:7065 Change-Id: I7cbad4277929717c211f70435cd6e462f11e4bda No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3525813 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano daef9577 2022-01-05T19:55:50 Vulkan: VkFormat/DrmFourCC Add functions to perform a lossy conversion from VkFormat to DrmFourCC and to convert a VkFormat to one or more DrmFourCC formats. Bug: angleproject:7065 Change-Id: Iecccea6a89fbf8adeb50c3cb0c737ad3aedf7c62 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3495123 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Antonio Caggiano <antonio.caggiano@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 3739a195 2022-03-09T13:56:36 perf tests: Record perf counter metrics. This adds a new command line argument that will allow the user to specify perf counters to record into the test output. Bug: angleproject:4918 Change-Id: Ia7432ff96eadf13ef681f67d2d503d00fd83e06e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3516970 Reviewed-by: Lingfeng Yang <lfy@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a956162c 2022-03-01T13:05:29 Vulkan: Expose performance counters via extension. This CL rewrites the Vulkan perf counters test to work in the angle_end2end_test suite using the newly exposed AMD extension. Note that we implement only a subset of the extension. Instead of generating monitors and starting/stopping them we simply read back all performance counter data at once using the special montior value "0". The CL also enables these tests on SwiftShader. Bug: angleproject:4918 Change-Id: I5d8f6eecb1ccff448657cbdb65b51a225dfb90c0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3497538 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 24c641dc 2022-03-01T11:12:38 Add stubs for AMD_performance_monitor. We can piggy-back on this extension to report internal ANGLE performance counters to the ANGLE tests. Includes a minor variable de-duplication in the EP generator. Bug: angleproject:4918 Change-Id: I4a76aea957b423a36a90349643bd50a4e1905849 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3497537 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tomasz Śniatowski 4a4bb07b 2022-03-03T21:56:05 Don't create a string out of a nullptr The code path is already behind an UNREACHABLE(), but having the code return nullptr in a function returning std::string is still UB, and won't compile in C++23. Return an empty string instead. Bug: chromium:1302724 Change-Id: I151d488c4e7e951dcae9f55c142ca49526e3b102 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3502448 Auto-Submit: Tomasz Śniatowski <tsniatowski@vewd.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano b92ebdb7 2022-02-24T12:23:09 EGL: Add code-gen for dmabuf extensions Add code-gen for EGL_EXT_image_dma_buf_import and EGL_EXT_image_dma_buf_import_modifiers. Bug: angleproject:7065 Change-Id: Ib1bd2a881f11e96b1e7e5128975bdba3bdc41e0f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3495122 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill c874943b 2022-02-18T15:29:14 Rename FastUnordered types to FlatUnordered. These names are consistent with the common parlance. Flat indicates the values are packed in memory, while fast indicates that lookup is as fast as possible. Bug: angleproject:6776 Change-Id: I7b56af26d7fdbf5956872be5033c3aa3f6b1b8c7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3484978 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Auto-Submit: Jamie Madill <jmadill@chromium.org>
Antonio Caggiano e2d5eb72 2022-02-24T10:21:06 Vulkan: Wayland dependency Add wayland as a third-party dependency and add it to the include directories of vulkan-dependent targets. Bug: angleproject:6902 Change-Id: I1c6305ac3e214ecda532988e28acaa6b8e997fd2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3487449 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 1e773db9 2022-02-22T10:51:15 Vulkan: Shader support for KHR_blend_equation_advanced Translator can accept the layout qualifiers for the advanced blend equation. No emulation code is currently generated, and ANGLE will initially rely on the corresponding Vulkan extension. Based on change by Brandon Schade <b.schade@samsung.com> Bug: angleproject:3586 Test: angle_unittests --gtest_filter=*KHRBlendEquationAdvanced* Change-Id: I3b728c5f144386d7030bbbb301ddb07daa1492b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3481309 Reviewed-by: Brandon Schade <b.schade@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi e47a67e4 2022-02-22T11:40:23 Update Python scripts to run with Python 3 * Updated the scripts used in run_code_generation.py so they could be run with Python 3 with no errors. Bug: angleproject:5707 Change-Id: Iad7ff61a34ce53b6d54821cdd53ee846dc4afc3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3482156 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 904a4797 2022-02-15T10:58:07 Python3 upgrades Required to run run_code_generation.py on gLinux. Bug: angleproject:5707 Change-Id: Ifb416be6f89eb67faf43e7de66c6f9a92a5eb5e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3465514 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Andrew Naumov d36df8d7 2022-02-10T15:12:01 Unicode support for system_utils on Windows Failed to load ANGLE_GLESV2_LIBRARY_NAME via ansi WinAPI if path contains unicode, use wide version instead. Bug: chromium:1296105 Change-Id: Ifae18b2aba83f3ae84954cc4dd9afc0e2c58834c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3452103 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Constantine Shablya 3f0a28ba 2022-02-11T16:18:37 Add entry points for EGL_KHR_partial_update Bug: angleproject:6960 Change-Id: If248b7ef5ebacd7dfb8c612e5a9106ba0060282e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3455787 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Schade 38fada35 2022-01-27T18:16:18 Vulkan: Add support for OES_primitive_bounding_box Add OES version of the primitive bound box extension Bug: angleproject:3576 Test: dEQP-GLES31.functional.primitive_bounding_box.* Change-Id: Ie44d952992a68dfffd5c124dda8dd11069f0c1e1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3425086 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
Wez d6fb76a6 2022-01-31T16:14:17 [fuchsia] Don't try to use calling executable path to load .so's Bug: angleproject:6964 Change-Id: I856bdbcb83826c6af88ffa79c2a97b97ca827c85 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3427639 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 2d3ce72d 2022-01-20T10:13:06 Refactor shared library load to avoid allocations. Fixes a leak of an angle::Library detected in the EGL loader. Bug: angleproject:6937 Change-Id: I623aa6172b98a35465e1d2641b92f67bdc5d24e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3403060 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Patrick To b3ed4780 2021-12-21T17:20:19 Change Windows display initialization from ANSI to wide version Bug: angleproject:6846 Change-Id: I2aee8f4b5b7546fc707705e435251fa9861e27d0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352866 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Lingfeng Yang 926b43e7 2022-01-06T13:31:54 Reland: Frontend: separate lock in swap prep Swapchain-based backends like Vulkan might block a lot in vkAcquireNextImageKHR, which is bad for overall fast progress if we also hold the global EGL lock there. This CL starts to split the global EGL lock. We release the EGL lock when performing vkAcquireNextImageKHR, and only maintain a lock for surfaces. This is done via a new custom entry point, EGL_PrepareSwapBuffers, so that we can control how the global lock is used throughout the entire call. Bug: angleproject:6851 Change-Id: I095cd8b3bdbb13c842cab0a46148e2122582cdfd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3373426 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
Shahbaz Youssefi 9d11a341 2021-12-16T13:47:04 Vulkan: Fix Vulkan SCB vs multiple subpasses vkCmdNextSubpass must be called on the primary command buffer, so the render pass command buffers need to be split on subpass boundaries. This is only done when using Vulkan secondary command buffers. Bug: angleproject:6811 Change-Id: I087fff305c757c78e87bfde4410e7de6bd1a6ba6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3344774 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexis Hetu 02f6226b 2022-01-06T09:07:29 Avoid using GetCWD() on MacOS when possible GetCWD is unreliable on MacOS and often fails or returns an undesirable directory. This CL makes the number of GetCWD() calls go from 2 to 0 when running content_shell locally on MacOS, which makes it start successfully with SwANGLE enabled. The 2 changes are: 1) Don't attempt to change the current working directory on MacOS for Validation Layers. This doesn't work as intended anyway and, on a GetCWD failure, ends up changing the ICD from SwiftShader to Default when using SwANGLE, which can make test runs fail. 2) Don't always call GetCWD() when calling GetModuleDirectory(). It is only required when the module path is not a full path, at which point some error info was added to help understand what's happening if we get into this case. Bug: chromium:1246171 Change-Id: Ib96142661dee3e06980eac4ffc3743aae8b97950 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3370036 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Tim Van Patten fd014271 2021-12-16T20:44:42 Vulkan: Match chromaFilter to min/mag for YUV AHBs From the VVL: VUID-VkSamplerCreateInfo-minFilter VkCreateSampler: VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT specifies that the format can have different chroma, min, and mag filters. However, VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT is not supported for VkSamplerYcbcrConversionCreateInfo.format = VK_FORMAT_UNDEFINED so chromaFilter needs to be equal to minFilter/magFilter. We don't know what the min/mag filters are when the AHB is imported, so we need to update the YcbcrConversionDesc with the current min/mag filter value before creating the VkSamplerYcbcrConversion when the ImageView is created. Additionally, if the min/mag filters are updated later, TextureVk::syncState() needs to recreate the ImageViews to ensure the chromaFilter matches the new min/magFilters. Test: atest android.media.cts.DecodeAccuracyTest#testGLViewDecodeAccuracy[0] Test: ImageTestES3.SourceYUVAHBTargetExternalYUVSampleLinearFiltering Bug: b/210526871 Change-Id: I95dbd9738f6e3fd0870e484518eee105e995f93a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3346394 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Kyle Piddington f13f440e 2021-12-15T15:11:05 Reland: Metal: Fix Webkit warnings in ANGLE build Fix nullable warnings, unused functions Add in additional function specification to FormatStringIntoVector to correctly fix warning Bug: angleproject:6781 Change-Id: I26af2d698f14d353832802aa7b5ce34c5a1f4b95 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3366796 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Cody Northrop 2ebd583e 2021-12-22T11:24:43 Android: Remove setenv from common path In Android production stress testing, the setenv call was causing a race condition. To fix, only use setenv in the paths that need it as a performance optimization. Specifically, FrameCapture makes use of it every frame. Bug: angleproject:6822 Change-Id: I452f1ef8607ca9baf15d69246932c47454a3ce46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3353893 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Ian Elliott <ianelliott@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jamie Madill 1da7e3af 2021-12-21T15:55:38 Revert "Metal: Fix Webkit warnings in ANGLE build" This reverts commit 6706799186683dd3733c4610de09d84721aa08c8. Reason for revert: Includes pragma that disables a warning. Original change's description: > Metal: Fix Webkit warnings in ANGLE build > > Fix nullable warnings, unused functions > > Bug: angleproject:6781 > Change-Id: I063331e60d31a55b3cc9df0b41ace014d7d13659 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343174 > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Commit-Queue: Kenneth Russell <kbr@chromium.org> Bug: angleproject:6781 Change-Id: Id5fce2afd0381030a974871b99e8adf075677bd1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352086 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 171bc07e 2021-12-20T13:10:33 Don't silently drop out-of-range bits in BitSetT Notes: - std::bitset's constructor accepts out-of-range bits (and drops them) - std::bitset with initializer list doesn't exist and is a BitSetT feature - |=, &= and ^= with non-bitset is a BitSetT feature - std::bitset's set(pos), reset(pos) and flip(pos) throw an exception if pos is out of the range of the bitset. This change adds an ASSERT in the functions that std::bitset would throw an exception, as well as functions that are only in BitSetT. Bug: angleproject:6840 Change-Id: Iab5bac40b05d4f7f29e0242ea0baa093721e3339 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3349980 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao eca427b2 2021-12-20T10:55:41 Vulkan: Add mutex to protect mVirtualBlock mVirtualBlock could be accessed from multiple thread when asyncCommandQueue is enabled, where the free call could come from the submission thread. This CL adds a mVirtualBlockMutex in BufferBlock and always take the lock when mVirtualBlock is been accessed. This CL also adds ConditionalMutex class for the general usage that a mutex is only used based on a boolean. Bug: angleproject:6840 Change-Id: Ib647b4ff12ebfc08f2a70192d39f16e15a1fc5f5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3350798 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Peng Huang 4a03668d 2021-12-20T20:58:17 Address comment in CL 3347143 Bug: chromium:1278515 Change-Id: I7d82d39ad94c6357b0df292fc716749cf610290f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3349938 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Peng Huang c07df6fe 2021-12-17T20:11:52 Disable vulkan device select layer for msan build The vulkan device select layer is not built with chrome, so this layer is not built with msan. So loading this layer will cause MemorySanitizer errors. Those errors are false positive. So disable it for msan build. Bug: chromium:1259170 Change-Id: I513d6dd3d4fbc16c62aaa3aa1e7cf299e3e4144a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3347143 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Maksim Sisov c7446ac4 2021-12-16T16:00:08 Add support for GL_MESA_framebuffer_flip_y 1/* LaCrOS, which is same as ChromeOS, relies on this extension and uses that with WebGL content. However, when LaCrOS uses ANGLE, the extension is not exposed and the WebGL content is y-inverted as direct scanout is always used. There are two bugs - 1) ANGLE should expose the extension so that direct scanout is possible (this CL fixes the issue. 2) LaCrOS shouldn't rely on the extension if it's not available (a bug to be fixed in Chromium). This particular CL consists of autogen files with framebufferParameteriMESA && getFramebufferParameterivMESA in Context marked as UNIMPLEMENTED. And also unimplemented validation. Bug: chromium:1231934 Change-Id: Id617846b0412f579df5b4ace6cb33c1ec6d403df Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343492 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Maksim Sisov <msisov@igalia.com>
Lubosz Sarnecki e7413adf 2021-12-15T18:35:29 system_utils_posix: Check for SEGV_MAPERR si_code. Android 12 emits a SEGV_MAPERR for mprotect page faults on the handler. Treat these callbacks as in range. This fixes the memory protection implementation on Android 12. Test: angle_unittests --gtest_filter="SystemUtils.PageFaultHandler*" Bug: angleproject:5857 Change-Id: I346b04230e1389de9f0a80b7f704dd65acfa9d82 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3340950 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Kyle Piddington 67067991 2021-12-15T15:11:05 Metal: Fix Webkit warnings in ANGLE build Fix nullable warnings, unused functions Bug: angleproject:6781 Change-Id: I063331e60d31a55b3cc9df0b41ace014d7d13659 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343174 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Alexis Hetu cac81f07 2021-12-14T22:56:15 Return full error info when opening a library with dlopen This CL adds a parameter to OpenSharedLibrary and OpenSharedLibraryWithExtension which is used to return the full path of the library which was opened. If dlopen failed, the string also contains the result of dlerror which explains what the error was. Bug: chromium:1246171 Change-Id: I374c7e2dfa18853c8137b4cbea06af8db3fdb501 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3340020 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Peng Huang 32f572b7 2021-12-03T17:58:51 Support creating EGLImage from VkImage Bug: chromium:1264439 Change-Id: I520182143e748f25b44d0725f3f171b7b33a85d8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3311131 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Jamie Madill 7fc6c07c 2021-09-29T14:02:29 Capture/Replay: Update process for trace upgrading. Includes changes to the retracing script. Also includes documentation on how the process works. Bug: angleproject:5133 Change-Id: I1acfe338f3fe0282a0461c314274c761ed04bd2f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3193418 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
John Cunningham 42bd4fc2 2021-12-10T14:58:17 Metal: add ANGLE_metal_create_context_ownership_identity. This Metal-specific EGL extension allows a given context and the GPU resources it allocates to be associated with a particular task ID on the system, for system-level bookkeeping purposes. Bug: angleproject:6795 Change-Id: I19ee0993564169b01c4a450e63dcfacd339b98b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3335172 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Lubosz Sarnecki 56aee5d6 2021-12-10T12:32:58 Reland "system_utils: Add memory protection functionality." This is a reland of b1c703e5f5e44514e8db958a5fb39ff16e514fd8 that was reverted in 663831aa676c59829cc3d822340812f016bf77f6. Skip PageFaultHandlerProtect and PageFaultHandlerDefaultHandler on macOS and Fuchsia. Original change's description: > Reland "system_utils: Add memory protection functionality." > > This is a reland of ab75a90ff4ecb9d99b5c72bde92222b07c285401 > that was reverted in b007e667a8f94b47788a5ba0b2e61c9ac2d1285f. > > Implement PageFaultHandler and memory protection functions. > Uses mprotect and sigaction on POSIX and equivalent Win API functions on > win32. > > Add tests to system_utils_unittests. > > Add stubs for winuwp. > > Replace ASSERT with ASSERT_TRUE in the PageFaultHandlerDefaultHandler > test to make it succeed on release builds, as the code was optimized > out. Furthermore the test did not correctly remove protection from the > whole area it protected, which caused a hang after deinitialization on > some build configurations, since the custom page fault handler was also > still in place. The test now correclty removes protection from the whole > area and sets back the original page fault handler. > > Test: angle_unittests --gtest_filter="SystemUtils.PageFaultHandler*" > Bug: angleproject:5857 > Change-Id: Ibb0acfefd9a09c3360c04c812a2a8346b951e1da > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3322992 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Test: angle_unittests --gtest_filter="SystemUtils.PageFaultHandler*" Bug: angleproject:5857 Change-Id: Ifaa966a7c569aa9ff0112897a02fa8f873cd52dd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3329610 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Alexis Hetu f7d92a32 2021-12-10T10:23:32 Add debug info when loading EGL entry points fails Mac11 bots are often failing with the: "Error loading EGL entry points" error for an unknown reason. This CL adds the library path to the error message to see if it's trying to open the correct file. Bug: chromium:1277690 Change-Id: Ieb73a3097702933a89794d92c19ee44a6301c169 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3330576 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Jamie Madill 663831aa 2021-12-09T18:08:28 Revert "Reland "system_utils: Add memory protection functionality."" This reverts commit b1c703e5f5e44514e8db958a5fb39ff16e514fd8. Reason for revert: Fails on fuchsia bots: https://ci.chromium.org/ui/p/chromium/builders/try/fuchsia_arm64/1020498/overview mprotect failed: Not supported Original change's description: > Reland "system_utils: Add memory protection functionality." > > This is a reland of ab75a90ff4ecb9d99b5c72bde92222b07c285401 > that was reverted in b007e667a8f94b47788a5ba0b2e61c9ac2d1285f. > > Implement PageFaultHandler and memory protection functions. > Uses mprotect and sigaction on POSIX and equivalent Win API functions on > win32. > > Add tests to system_utils_unittests. > > Add stubs for winuwp. > > Replace ASSERT with ASSERT_TRUE in the PageFaultHandlerDefaultHandler > test to make it succeed on release builds, as the code was optimized > out. Furthermore the test did not correctly remove protection from the > whole area it protected, which caused a hang after deinitialization on > some build configurations, since the custom page fault handler was also > still in place. The test now correclty removes protection from the whole > area and sets back the original page fault handler. > > Test: angle_unittests --gtest_filter="SystemUtils.PageFaultHandler*" > Bug: angleproject:5857 > Change-Id: Ibb0acfefd9a09c3360c04c812a2a8346b951e1da > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3322992 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Bug: angleproject:5857 Change-Id: Iaab4067a7ec9240bb6c64b810ac6d3ea7bd86fe1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3327743 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Lubosz Sarnecki b1c703e5 2021-12-08T14:53:46 Reland "system_utils: Add memory protection functionality." This is a reland of ab75a90ff4ecb9d99b5c72bde92222b07c285401 that was reverted in b007e667a8f94b47788a5ba0b2e61c9ac2d1285f. Implement PageFaultHandler and memory protection functions. Uses mprotect and sigaction on POSIX and equivalent Win API functions on win32. Add tests to system_utils_unittests. Add stubs for winuwp. Replace ASSERT with ASSERT_TRUE in the PageFaultHandlerDefaultHandler test to make it succeed on release builds, as the code was optimized out. Furthermore the test did not correctly remove protection from the whole area it protected, which caused a hang after deinitialization on some build configurations, since the custom page fault handler was also still in place. The test now correclty removes protection from the whole area and sets back the original page fault handler. Test: angle_unittests --gtest_filter="SystemUtils.PageFaultHandler*" Bug: angleproject:5857 Change-Id: Ibb0acfefd9a09c3360c04c812a2a8346b951e1da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3322992 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Kai Ninomiya b007e667 2021-12-08T01:00:54 Revert "system_utils: Add memory protection functionality." This reverts commit ab75a90ff4ecb9d99b5c72bde92222b07c285401. Reason for revert: Causes angle_unittests to hang on many Linux FYI bots and likely Android. First known failures on Linux: https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20FYI%20Release%20(AMD%20RX%205500%20XT)/7318/overview https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20FYI%20Release%20(Intel%20HD%20630)/30297/overview https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20FYI%20Experimental%20Release%20(Intel%20HD%20630)/43446/overview https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20FYI%20Release%20(Intel%20UHD%20630)/4720/overview https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20FYI%20Release%20(NVIDIA)/29040/overview https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20FYI%20Experimental%20Release%20(NVIDIA)/45374/overview And Android: https://ci.chromium.org/ui/p/chromium/builders/ci/Android%20FYI%20Release%20(Nexus%209)/35989/overview https://ci.chromium.org/ui/p/chromium/builders/ci/Android%20FYI%20Release%20(NVIDIA%20Shield%20TV)/33490/overview Original change's description: > system_utils: Add memory protection functionality. > > Implement PageFaultHandler and memory protection functions. > Uses mprotect and sigaction on POSIX and equivalent Win API functions on > win32. > > Add tests to system_utils_unittests. > > Add stubs for winuwp. > > Test: angle_unittests --gtest_filter="SystemUtils.PageFaultHandler*" > Bug: angleproject:5857 > Change-Id: Ia6d2e87c409e6139ccaebc8c7186cd4cd844fd28 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3236998 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Bug: angleproject:5857 Change-Id: I7df73a3ee3f5fa87f002045dfa87d8ca2747f60f No-Tree-Checks: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3322104 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
Lubosz Sarnecki ab75a90f 2021-10-21T20:20:07 system_utils: Add memory protection functionality. Implement PageFaultHandler and memory protection functions. Uses mprotect and sigaction on POSIX and equivalent Win API functions on win32. Add tests to system_utils_unittests. Add stubs for winuwp. Test: angle_unittests --gtest_filter="SystemUtils.PageFaultHandler*" Bug: angleproject:5857 Change-Id: Ia6d2e87c409e6139ccaebc8c7186cd4cd844fd28 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3236998 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>