src/libANGLE/renderer/gl


Log

Author Commit Date CI Message
Jamie Madill ce6f9c8f 2021-11-19T14:52:48 Update checked numerics library. This library hadn't been updated in quite some time and had bugs which affected UBSAN in some operators. Bug: angleproject:5795 Change-Id: I40f658655034ce03df29cf4c71acb3f6fe96bef0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3289941 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang b6e2e8a0 2021-11-16T13:13:14 GL: Fix share groups for display texture sharing. Chrome uses display-level texture share groups for WebGL contexts. When this extension is in use, make sure all internal contexts are created in the same share group. Bug: chromium:1268830, chromium:1268389, chromium:1268218 Change-Id: I3925dffb9bb23fbbc7adcd3bee8cd62323b993e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3285213 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 6fe13477 2021-11-11T00:47:14 Vulkan: Add external's pNext to ANGLE_external_objects_flags ANGLE was chaining VkImageFormatListCreateInfoKHR to VkImageCreateInfo::pNext to support sRGB extensions. For external images, it was unknown whether that was valid because there was no way to know if external used an identical chain of pNexts. This was causing a discrepancy between images created by Chrome and those created by ANGLE as part of an import. This change updates ANGLE_external_objects_flags to take in the pNext chain external has used to create the image so ANGLE could create the image identically. Bug: chromium:1266094 Change-Id: I479b9e7ff39d437425dc91c79834880749766f99 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3274177 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang f045fe07 2021-11-04T10:44:20 Fix MSRTT unsized texture formats querying supported samples. The texture format information in gl::Context is sized formats only. When MSRTT textures are used, they would query the potentially unsized format for maximum supported samples. This would return 0 and cause an incomplete framebuffer when the sample count missmatched with other attachments. Bug: chromium:1238327 Change-Id: I06514b1b9badefa81bba3b7ad9ba5db932b4c12b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3260555 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jonah Ryan-Davis f422f21a 2021-11-09T18:42:15 Reland "Metal: Reintroduce GPU power preference selection code." This reverts commit 67a8cf07a740c5ce3aafd2ad7fddd370451b3525. Reason for revert: Landed Chromium-side dependency: https://chromium-review.googlesource.com/c/chromium/src/+/3271170 Original change's description: > Revert "Metal: Reintroduce GPU power preference selection code." > > This reverts commit 017161701b7dbf70a13f3c180a39e1fa45c27d9f. > > Reason for revert: Blocking roller, please re-land with the fix. > > Original change's description: > > Metal: Reintroduce GPU power preference selection code. > > > > This CL re-introduces the GPU power preference code to > > the metal backend. It also reworks EGLDisplay caching > > in the frontend to cache based on the native display > > as well as the power preference attribute. > > A new extension, EGL_ANGLE_display_power_preference is > > added based on EGL_ANGLE_power_preference. This extension > > is a client extension that allows selection of GPU on > > display creation, similar to how GPUs are selected on > > context creation in EGL_ANGLE_power_preference. > > This CL adds EGLDisplayPowerPreferenceTest and enables it on > > the metal backend. > > > > Bug: angleproject:6143 > > Change-Id: I0a081dcd2e3f18ab365fdd3498ddcb6e2ba35212 > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3231986 > > Reviewed-by: Kenneth Russell <kbr@chromium.org> > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Reviewed-by: Gregg Tavares <gman@chromium.org> > > Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> > > TBR=kbr@chromium.org,gman@chromium.org,jonahr@google.com,jmadill@chromium.org,angle-scoped@luci-project-accounts.iam.gserviceaccount.com > > Change-Id: I4f775bf7139253a87b033a30e0da2100b3c1bb02 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: angleproject:6143 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3270749 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> # Not skipping CQ checks because this is a reland. Bug: angleproject:6143 Change-Id: Id9b0a5cbb76e4dea9e2f2da2b1c47a0587dfdaf5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3270970 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Jamie Madill 67a8cf07 2021-11-09T15:10:50 Revert "Metal: Reintroduce GPU power preference selection code." This reverts commit 017161701b7dbf70a13f3c180a39e1fa45c27d9f. Reason for revert: Blocking roller, please re-land with the fix. Original change's description: > Metal: Reintroduce GPU power preference selection code. > > This CL re-introduces the GPU power preference code to > the metal backend. It also reworks EGLDisplay caching > in the frontend to cache based on the native display > as well as the power preference attribute. > A new extension, EGL_ANGLE_display_power_preference is > added based on EGL_ANGLE_power_preference. This extension > is a client extension that allows selection of GPU on > display creation, similar to how GPUs are selected on > context creation in EGL_ANGLE_power_preference. > This CL adds EGLDisplayPowerPreferenceTest and enables it on > the metal backend. > > Bug: angleproject:6143 > Change-Id: I0a081dcd2e3f18ab365fdd3498ddcb6e2ba35212 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3231986 > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Gregg Tavares <gman@chromium.org> > Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> TBR=kbr@chromium.org,gman@chromium.org,jonahr@google.com,jmadill@chromium.org,angle-scoped@luci-project-accounts.iam.gserviceaccount.com Change-Id: I4f775bf7139253a87b033a30e0da2100b3c1bb02 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:6143 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3270749 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 01716170 2021-10-14T13:24:41 Metal: Reintroduce GPU power preference selection code. This CL re-introduces the GPU power preference code to the metal backend. It also reworks EGLDisplay caching in the frontend to cache based on the native display as well as the power preference attribute. A new extension, EGL_ANGLE_display_power_preference is added based on EGL_ANGLE_power_preference. This extension is a client extension that allows selection of GPU on display creation, similar to how GPUs are selected on context creation in EGL_ANGLE_power_preference. This CL adds EGLDisplayPowerPreferenceTest and enables it on the metal backend. Bug: angleproject:6143 Change-Id: I0a081dcd2e3f18ab365fdd3498ddcb6e2ba35212 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3231986 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Gregg Tavares <gman@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Geoff Lang d2c01d2c 2021-09-17T12:57:14 GL: Allow selecting virtualization groups at context creation Rewrite EGL_ANGLE_platform_angle_context_virtualization to EGL_ANGLE_context_virtualization, changing the context virtualization parameter to an identifier for what virtualization group the frontend context should be added to. This allows ANGLE's GL backend to be used by multiple threads if the user creates contexts with different virtualization groups. Bug: angleproject:6406 Change-Id: I7414d4705ce10bdf63a9b824043d5dd040dad875 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3169193 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill bdc633a8 2021-10-20T12:33:42 Pass command type down to ContextImpl::syncState. This mirrors the command type passed to the object sync functions. It will be useful to determine if we're syncing for a draw or a dispatch call. Bug: angleproject:6595 Change-Id: Ia04bd14a3c2dd2eb211c47a6e55f8ddcbfedfaaa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3233904 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jonah Ryan-Davis 60271a71 2021-10-15T10:14:35 GL: Re-scope Intel/Mesa version for disableSyncControlSupport. This workaround's scope was widened due to issues detecting intel GPUs in systems with multiple GPUs. That was fixed, so we can re-scope the workaround. Bug: chromium:1187475 Change-Id: Iaf946369273dc5c1e2f8f91a14758b6751615c7f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226721 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Lingfeng Yang 2615e6b2 2021-10-07T07:07:46 Remove the syncFramebufferBindingsOnTexImage workaround It's unused Bug: angleproject:6503 Change-Id: Ia9039432006ec6988e93db08b9a572c7a7f837ed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212428 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 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>
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>
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>
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>
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>
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>
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>
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>
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>
Charlie Lao e83f1b9a 2021-09-13T09:31:50 Reland "GL: Relax the assertion to exclude BoundAsAttachment bit" This is a reland of b27bca08ef4ee20a0952b8efeb7c132bdb2ebb50 Original change's description: > GL: Relax the assertion to exclude BoundAsAttachment bit > > Front end has added DIRTY_BIT_BOUND_AS_ATTACHMENT when texture is > attached to FBO. This bit usually is processed at Texture::syncState > time. But there are situations that This call may not been called before > texture is been used, since existing code not expecting merely attach > tetxure to FBO will insert dirty bit to texture and there is this place > updateProgramTextureBindings() in GL backend is hitting assertion > because of this new bit. This CL adds a new check > hasAnyDirtyBitExcludingBoundAsAttachmentBit to avoid hitting assertion. > > Bug: angleproject:6381 > Change-Id: I615c27e5d5efe751a25d5c9ecf11c1409a699f46 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158547 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Charlie Lao <cclao@google.com> Bug: angleproject:6381 Change-Id: I29eb759a0b4500b7ab6d3d4ce73a27bc71882b57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158299 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 3ad0b862 2021-09-13T20:10:10 Revert "GL: Relax the assertion to exclude BoundAsAttachment bit" This reverts commit b27bca08ef4ee20a0952b8efeb7c132bdb2ebb50. Reason for revert: Wrong fix. Original change's description: > GL: Relax the assertion to exclude BoundAsAttachment bit > > Front end has added DIRTY_BIT_BOUND_AS_ATTACHMENT when texture is > attached to FBO. This bit usually is processed at Texture::syncState > time. But there are situations that This call may not been called before > texture is been used, since existing code not expecting merely attach > tetxure to FBO will insert dirty bit to texture and there is this place > updateProgramTextureBindings() in GL backend is hitting assertion > because of this new bit. This CL adds a new check > hasAnyDirtyBitExcludingBoundAsAttachmentBit to avoid hitting assertion. > > Bug: angleproject:6381 > Change-Id: I615c27e5d5efe751a25d5c9ecf11c1409a699f46 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158547 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Charlie Lao <cclao@google.com> Bug: angleproject:6381 Change-Id: I0e7bf066a3736c72918f1fe36d195b5c516b569c No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158297 Reviewed-by: Charlie Lao <cclao@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao b27bca08 2021-09-13T09:31:50 GL: Relax the assertion to exclude BoundAsAttachment bit Front end has added DIRTY_BIT_BOUND_AS_ATTACHMENT when texture is attached to FBO. This bit usually is processed at Texture::syncState time. But there are situations that This call may not been called before texture is been used, since existing code not expecting merely attach tetxure to FBO will insert dirty bit to texture and there is this place updateProgramTextureBindings() in GL backend is hitting assertion because of this new bit. This CL adds a new check hasAnyDirtyBitExcludingBoundAsAttachmentBit to avoid hitting assertion. Bug: angleproject:6381 Change-Id: I615c27e5d5efe751a25d5c9ecf11c1409a699f46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3158547 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao 8ea87a67 2021-08-17T18:46:36 Vulkan: Avoid texture format fallback when possible Some texture formats are not renderable on some hardware. For example, R4G4B4A4 are not renderable on nvidia and not blendable on ARM. R5G5B5A1 are also not blendable on nvidia. Right now when we generate format table, we are being most conservative, picking an actual format that is always renderable and blendable. This means when R4G4B4A4 is used on one of these GPUs, we are always falling back to R8G8B8A8 regardless if the texture is actually being used as color attachment or not. This CL adds a actualRenderableImageFormatID field in vk::Format. Initially we will pick actualImageFormatID which only ensures texture sample capability. If later on the texture is being attached to FBO, then we will switch to actualRenderableImageFormatID and do data copy if necessary. This way we save memory and reduce texture bandwidth for most usage of these textures. For renderBuffer and surfaces and EGLImages, we always pick the renderable textures. Bug: b/196456356 Change-Id: I02eec3365c2a317b0d1bad6dbdc3e741114c5bba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3104514 Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Geoff Lang 851ecf49 2021-09-08T14:40:41 GL: Temporarily disable MSRTT on Android. This extension is causing validation errors and graphics corruption in Chrome. Disable it until the bugs are resolved. Bug: chromium:1238327 Change-Id: I823303f2d75f2d6422cf5680a8751b9b79c8580b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3149573 Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill e1bc8de3 2021-09-08T07:59:37 Change links from 'master' to 'main' branch. Bug: chromium:1226949 Change-Id: Ie7b28b2fa094cf0c0a407968d681e580519cbb88 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3148210 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tim Van Patten 8bb3c827 2021-07-22T19:06:40 Fix Multithreaded eglDestroyContext()/eglTerminate() The following EGL calls can lead to a crash in eglMakeCurrent(): Thread A: eglMakeCurrent(context A) Thread B: eglDestroyContext(context A) B: eglTerminate() <<--- this release context A Thread A: eglMakeCurrent(context B) The eglMakeCurrent(context B) call will assert when attempting to unMakeCurrent(), since thread A doesn't know that context A was already destroyed by thread B. To fix this: 1.) A Context will only be released once there are no Threads that currently have a reference to it (no longer have the Context current). - Context::mIsCurrent is being removed, since it was inaccurate and not thread-safe. For example, when eglTerminate() was called, the eglTerminate()'ing-Thread would "steal" the Context that was current on another Thread to destroy it. 2.) A Display will only be fully terminated and its resources released once all Contexts have been destroyed and are no longer current. Otherwise, Display::terminate() will return if any Contexts are still in use by a Thread. EGL 1.5 Specification 3.2 Initialization If contexts or surfaces, created with respect to dpy are current (see section 3.7.3) to any thread, then they are not actually destroyed while they remain current. If other resources created with respect to dpy are in use by any current context or surface, then they are also not destroyed until the corresponding context or surface is no longer current. With this fix, the app com.netmarble.sknightsmmo can start. This also exposed an issue with GlslangFinalize(), since glslang can only be initialized/finalized once per process. Otherwise, the following EGL commands will call GlslangFinalize() without ever being able to GlslangInitialize() again, leading to crashes since GlslangFinalize() cleans up glslang for the entire process. dpy1 = eglGetPlatformDisplay() | eglInitialize(dpy1) | GlslangInitialize() dpy2 = eglGetPlatformDisplay() | eglInitialize(dpy2) | GlslangInitialize() eglTerminate(dpy2) | GlslangFinalize() eglInitialize(dpy1) | isInitialized() == true Since Display::isInitialized() == true, the rest of Display::initialize() is skipped and GlslangInitialize() is not called. Later, the next test that attempts to compile a program will crash due to glslang no longer being initialized. Finally, this exposed the following tests leaking EGLContext handles: - EGLSurfaceTest::initializeContext() - EGLContextSharingTest.DisplayShareGroupContextCreation - EGLCreateContextAttribsTest.IMGContextPriorityExtension - EGLMultiContextTest.TestContextDestroySimple Other tests were failing to reset the context, preventing the Display from being terminated since there were still references to Contexts owned by the display: eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); Bug: angleproject:6208 Bug: angleproject:6304 Bug: angleproject:6322 Test: EGLContextSharingTest.EglTerminateMultiThreaded Test: EGLContextSharingTestNoFixture.EglDestoryContextManyTimesSameContext Test: Load com.netmarble.sknightsmmo Change-Id: I160922af93db6cabe0ed396be77762fa8dfc7656 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3046961 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
Geoff Lang de09f8db 2021-09-02T18:21:37 Revert "GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY" This reverts commit 4b5a774e855af2493d64b0635f56053bd795c5c5. Reason for revert: broken on iOS and Skia Original change's description: > GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY > > Bug: angleproject:3020 > Change-Id: Iff460a1012d06e1c5feff84d91117de87e7c870a > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123167 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: angleproject:3020 Change-Id: I54d81a7b734d007f65ff97990008f5e6eb8536f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140453 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Aditya Kushwah f015ae81 2021-08-02T12:47:32 Implement onLabelUpdate method. This change will implement the onLabelUpdate method by calling from every TextureStorage object. Instead of using setDebugName, introduced two new functions, setInternalName and setKHRDebugLabel, which will set the internal name and KHR label respectively that will further be sent to D3D string. Bug: chromium:1164111 Change-Id: I401ca9f6e8a2099a8807f0d7f321efe74269f9f0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067921 Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Geoff Lang 4b5a774e 2020-04-03T14:56:36 GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY Bug: angleproject:3020 Change-Id: Iff460a1012d06e1c5feff84d91117de87e7c870a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123167 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang f3bccd9d 2021-08-26T18:04:13 Revert "GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY" This reverts commit 8d7f4cc986778bfff0b242dbea6083346da6c54d. Reason for revert: Broke CrOS build. Original change's description: > GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY > > Bug: angleproject:3020 > Change-Id: If60448f80daaeeb1503b41db8ac309e45923fd13 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135929 > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> Bug: angleproject:3020 Change-Id: I0930c1bdb5356d533fae563428893aa8a9f91a52 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123266 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Geoff Lang 8d7f4cc9 2020-04-03T14:56:36 GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY Bug: angleproject:3020 Change-Id: If60448f80daaeeb1503b41db8ac309e45923fd13 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135929 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Alexey Knyazev 47279c72 2021-08-15T23:20:32 Adjust compressed texture validation; add test - Format check happens before target check to accommodate for unknown / disabled format enums. - PVRTC1 and ETC1 enums are not allowed for 2D Array and 3D targets. - PVRTC1 sRGB formats require enabling two extensions. - New noCompressedTexture3D limitation for older Metal versions. The test checks that only the appropriate entry points are affected after enabling compressed texture extensions. Bug: angleproject:5731, angleproject:6280 Change-Id: I4943cd3a82f60f9348215caa8639e0bc3e8b45db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3094018 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang fc09350a 2021-08-18T12:24:39 GL: Update VertexArrayGL to use ANGLE_GL_TRY. Bug: angleproject:3020 Change-Id: If3409d0d4bc9fdc5c990cece92461e2526c752c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1809058 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev eb458fbe 2021-08-18T14:17:31 GL: Add emulateImmutableCompressedTexture3D workaround The workaround replaces glTexStorage3D with a series of glCompressedTexImage3D calls. Bug: chromium:1060012 Change-Id: I08e026e68dd697654cc4ab8feb190a35e56ea133 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3103070 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Jeff Vigil 6136620b 2021-03-25T15:43:06 Reland "EGL: GLES: Implement GL_EXT_protected_textures" This is a reland of 6210a9b34a721df2c84cf69170ad9bf7ba40e4aa This removes changes in gl backend. Original change's description: > EGL: GLES: Implement GL_EXT_protected_textures > > Implement EGL_EXT_protected_content Images > Add protected member to Images and Textures > Add error when creating objects if not supported or > does't match native buffer > When creating siblings pass protected state > Add extension caps > Add Validation > Add GetTexParameter and SetTextparameter > Add protected to Texture and state > Expand tests for images and textures > > Test: angle_end2end_test --gtest_filter=EGLProtectedContentTest > > Bug: angleproject:3965 > Change-Id: I35a89b4e80bba6d9b6831c68e71630eef304dacb > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2802852 > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Test: angle_end2end_test --gtest_filter=EGLProtectedContentTest Bug: angleproject:3965 Change-Id: Id36d697c53afc0f0dadf92bda4565f9157f4fc2a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3076825 Commit-Queue: Brandon Schade <b.schade@samsung.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 091fb9b9 2021-07-23T10:44:35 Reland "Reland "GL: Fix GPU detection"" This is a reland of a8f9b79a14b923e925d4aecb5eb5d973f92ae4e1 It was assumed that getting the GPU info from the system will always yield a valid Device ID, but this seems to be incorrect on some platforms (e.g. Apple M1). Reland reverts to the old logic of silently accepting 0 as Device ID. Original change's description: > Reland "GL: Fix GPU detection" > > This is a reland of 30dea869a7dc939f94048de23d70705247905c51 > > Original change's description: > > GL: Fix GPU detection > > > > Always use GL_VENDOR to determine vendor. On multi-GPU systems, this > > ensures that the correct GPU is used to determine workarounds. > > GetSystemInfo is still broken in that it assumes the discrete GPU to be > > active, but with this change it will only affect the test infrastructure > > (and not users). > > > > Bug: chromium:1187475 > > Bug: angleproject:6174 > > Change-Id: I4dffadf0e28c73e01d6b4bf49ab708c0714cdc7c > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3049350 > > Reviewed-by: Kenneth Russell <kbr@chromium.org> > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > > Bug: chromium:1187475 > Bug: angleproject:6174 > Change-Id: Id0e5bae23f60e87d3de384e84dc5b8059013926d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067801 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1187475 Bug: angleproject:6174 Change-Id: Ie13854da314d8963c33f61f1fd1628a674fae434 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067768 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 09d5047b 2021-08-03T01:31:03 GL: Remove the rewriteVectorScalarArithmetic workaround This workaround was implemented for a bug in Nvidia driver 387 which is end-of-life. More recent driver branches (390 and 4XX) are fixed, and so this workaround is no longer required. The implementation of the workaround itself could introduce bugs. Bug: chromium:772651 Bug: chromium:1201084 Change-Id: I3db179eb90d9124235bdad2daacc712302906d8e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067952 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Shahbaz Youssefi 10d50f64 2021-08-04T14:17:17 Revert "Reland "GL: Fix GPU detection"" This reverts commit a8f9b79a14b923e925d4aecb5eb5d973f92ae4e1. Reason for revert: assertion failure on mac ARM bots: anglebug.com/6242 Original change's description: > Reland "GL: Fix GPU detection" > > This is a reland of 30dea869a7dc939f94048de23d70705247905c51 > > Original change's description: > > GL: Fix GPU detection > > > > Always use GL_VENDOR to determine vendor. On multi-GPU systems, this > > ensures that the correct GPU is used to determine workarounds. > > GetSystemInfo is still broken in that it assumes the discrete GPU to be > > active, but with this change it will only affect the test infrastructure > > (and not users). > > > > Bug: chromium:1187475 > > Bug: angleproject:6174 > > Change-Id: I4dffadf0e28c73e01d6b4bf49ab708c0714cdc7c > > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3049350 > > Reviewed-by: Kenneth Russell <kbr@chromium.org> > > Reviewed-by: Jamie Madill <jmadill@chromium.org> > > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> > > Bug: chromium:1187475 > Bug: angleproject:6174 > Change-Id: Id0e5bae23f60e87d3de384e84dc5b8059013926d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067801 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1187475 Bug: angleproject:6174 Change-Id: Ice7a1246cb7ad0c257e685b1da4424aba8eaf406 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067767 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Shahbaz Youssefi a8f9b79a 2021-07-23T10:44:35 Reland "GL: Fix GPU detection" This is a reland of 30dea869a7dc939f94048de23d70705247905c51 Original change's description: > GL: Fix GPU detection > > Always use GL_VENDOR to determine vendor. On multi-GPU systems, this > ensures that the correct GPU is used to determine workarounds. > GetSystemInfo is still broken in that it assumes the discrete GPU to be > active, but with this change it will only affect the test infrastructure > (and not users). > > Bug: chromium:1187475 > Bug: angleproject:6174 > Change-Id: I4dffadf0e28c73e01d6b4bf49ab708c0714cdc7c > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3049350 > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1187475 Bug: angleproject:6174 Change-Id: Id0e5bae23f60e87d3de384e84dc5b8059013926d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067801 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill 1f0e2916 2021-08-03T13:42:28 Revert "GL: Fix GPU detection" This reverts commit 30dea869a7dc939f94048de23d70705247905c51. Reason for revert: Breaking roll into Chrome, see bug. Original change's description: > GL: Fix GPU detection > > Always use GL_VENDOR to determine vendor. On multi-GPU systems, this > ensures that the correct GPU is used to determine workarounds. > GetSystemInfo is still broken in that it assumes the discrete GPU to be > active, but with this change it will only affect the test infrastructure > (and not users). > > Bug: chromium:1187475 > Bug: angleproject:6174 > Change-Id: I4dffadf0e28c73e01d6b4bf49ab708c0714cdc7c > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3049350 > Reviewed-by: Kenneth Russell <kbr@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Bug: chromium:1187475 Bug: angleproject:6174 Change-Id: I815c456b0e9775115ae6d2577b40399818b5bff5 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067800 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi 30dea869 2021-07-23T10:44:35 GL: Fix GPU detection Always use GL_VENDOR to determine vendor. On multi-GPU systems, this ensures that the correct GPU is used to determine workarounds. GetSystemInfo is still broken in that it assumes the discrete GPU to be active, but with this change it will only affect the test infrastructure (and not users). Bug: chromium:1187475 Bug: angleproject:6174 Change-Id: I4dffadf0e28c73e01d6b4bf49ab708c0714cdc7c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3049350 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexis Hetu 014460d8 2021-07-30T09:19:50 Rename WebSwapLayerCGL to WebSwapCGLLayer Renaming WebSwapLayerCGL to fix the following MacOS warning: Class WebSwapLayerCGL is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/ Frameworks/WebCore.framework/Versions/A/WebCore and .../chromium/src/out/.../Chromium.app/Contents/Frameworks/ Chromium Framework.framework/Versions/.../Libraries/ libGLESv2.dylib One of the two will be used. Which one is undefined. Bug: angleproject:5253 Change-Id: I016e7467994d3ecf7b22750af2606314593dd516 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3062212 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Shahbaz Youssefi 8f6f52b5 2021-07-23T10:14:27 GL: Temporarily disable sync control on all GPUs on Linux This workaround is supposed to be limited to Intel GPUs with a recent mesa version, but due to anglebug.com/6174 is not actually enabled on dual-GPU systems. The workaround is temporarily disabled on all GPUs until said issue is fixed. Bug: chromium:1187475 Bug: angleproject:6174 Change-Id: Ieee430b1e2a04e36d6f8d60cabc9e391f0e49988 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3048237 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill c408926f 2021-07-22T12:00:59 Revert "EGL: GLES: Implement GL_EXT_protected_textures" This reverts commit 6210a9b34a721df2c84cf69170ad9bf7ba40e4aa. Reason for revert: Suspected for breaking ANGLE->Chrome roller. Bug: angleproject:6204 Original change's description: > EGL: GLES: Implement GL_EXT_protected_textures > > Implement EGL_EXT_protected_content Images > Add protected member to Images and Textures > Add error when creating objects if not supported or > does't match native buffer > When creating siblings pass protected state > Add extension caps > Add Validation > Add GetTexParameter and SetTextparameter > Add protected to Texture and state > Expand tests for images and textures > > Test: angle_end2end_test --gtest_filter=EGLProtectedContentTest > > Bug: angleproject:3965 > Change-Id: I35a89b4e80bba6d9b6831c68e71630eef304dacb > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2802852 > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:3965 Change-Id: Ia3ef260a17097b474189ccad5b235a9db99ee00b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3043889 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Jeff Vigil 6210a9b3 2021-03-25T15:43:06 EGL: GLES: Implement GL_EXT_protected_textures Implement EGL_EXT_protected_content Images Add protected member to Images and Textures Add error when creating objects if not supported or does't match native buffer When creating siblings pass protected state Add extension caps Add Validation Add GetTexParameter and SetTextparameter Add protected to Texture and state Expand tests for images and textures Test: angle_end2end_test --gtest_filter=EGLProtectedContentTest Bug: angleproject:3965 Change-Id: I35a89b4e80bba6d9b6831c68e71630eef304dacb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2802852 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Qin Jiajia 397fc145 2021-07-15T09:20:28 Fix the ext-texture-norm16 with RG16 failures Don't apply the readPixelsUsingImplementationColorReadFormatForNorm16 workaround for Intel GPU. With this workaround, below error will be printed: GL_INVALID_OPERATION in glReadPixels(invalid format GL_RG and/or type GL_UNSIGNED_SHORT) in FramebufferGL.cpp, readPixelsAllAtOnce Test: conformance2/extensions/ext-texture-norm16.html Bug: chromium:1208297 Change-Id: Ic9016c3afd8a0d2add61247adbf0d9434e8ce9f4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3028810 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Tom Anderson 298fafd7 2021-07-14T13:57:30 [GLX] Allow usage of multiple visuals When using AMGLE_x11_visual, a single visual is specified for the whole session. This is limiting since windows can have different visuals. For example, one window may want transparency and another window may not. This CL makes it not-an-error to use a window with a visual other than the one set with ANGLE_X11_VISUAL_ID. In this case, ANGLE will fallback to using a child window, as if ANGLE_X11_VISUAL_ID had not been specified. Long term, a better solution would be to allow specifying ANGLE_X11_VISUAL_ID per window. Bug: chromium:1225953 Change-Id: Ibec411cfd1341c30b2842a7ddba3fea6023de2b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3028803 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Qin Jiajia 15581f35 2021-07-13T15:01:56 Fix the INVALID_ENUM error This PR fixes the GL_INVALID_ENUM error caused by framebufferTexture2D in copySubTextureCPUReadback with TEXTURE_EXTERNAL_OES as the texture target. TEST conformance/textures/video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html conformance/textures/video/tex-2d-luminance-luminance-unsigned_byte.html conformance/textures/video/tex-2d-alpha-alpha-unsigned_byte.html conformance2/textures/video/tex-2d-srgb8-rgb-unsigned_byte.html conformance2/textures/video/tex-2d-rgb9_e5-rgb-float.html conformance2/textures/video/tex-2d-srgb8_alpha8-rgba-unsigned_byte.html conformance2/textures/video/tex-2d-rgb9_e5-rgb-half_float.html conformance2/textures/video/tex-2d-rgb16f-rgb-float.html conformance2/textures/video/tex-2d-rgb16f-rgb-half_float.html conformance2/textures/video/tex-2d-rgb32f-rgb-float.html Bug: chromium:1208297 Change-Id: Ic62ba95ad6fd70f293a7261dc640a95dcabe7ba2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3023666 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Jonah Ryan-Davis 428d7c4d 2021-07-12T15:23:45 GL: Widen scope of disable_sync_control_support workaround. Crashes and hangs are still happening on Linux/Intel/Mesa 20. This should already not expose the OML_sync_control extension, so widen the scope of the workaround to see if there is an issue detecting Mesa version. Bug: chromium:1187475 Change-Id: I6397f459cd58dba449913ef1c7ce897e8a06cbd1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3022222 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Kyle Piddington d33a2222 2021-04-26T16:56:15 Upstream Apple's direct-to-Metal backend: compile libANGLE. This change is meant to merge the metal backend changes from Apple's direct-to-Metal backend. Taken from Kyle Piddington's CL: https://chromium-review.googlesource.com/c/angle/angle/+/2857366/ The goal of this CL is to merge the metal backend code in a state that compiles, but not to switch the Metal backend over to using the direct-to-metal backend yet. Bug: angleproject:5505 Bug: angleproject:6127 Change-Id: If6783e06e0086b3a1dd25c6f53caca5cfc96cb86 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950067 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Qin Jiajia 17a4b6e7 2021-07-07T11:00:48 Fix that clear-srgb-color-buffer is not correct This change removes the limitation that syncClearState/ syncClearBufferState is only for STANDARD_GL_DESKTOP so that it works on chromeos. Test: conformance2/rendering/clear-srgb-color-buffer.html deqp/functional/gles3/fbocolorbuffer/clear.html Bug: chromium:1208297 Change-Id: I7c5fed3545f623cca3f2245c67fddaf3401388b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3010630 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Yuly Novikov 89f2a619 2021-07-08T21:45:11 Revert "GL: Use glClear for robust init on Android." This reverts commit 37c5d36fef783406c30a8ed8b8b4455f35374834. Reason for revert: crashes on Pixel 4, see https://chromium-review.googlesource.com/c/chromium/src/+/3016164 Original change's description: > GL: Use glClear for robust init on Android. > > The allowClearForRobustResourceInit was used to work around driver > bugs on other Windows and Linux and has a lot of CPU overhead. > > Re-enable it on Android (except some older Adreno). > > Bug: chromium:983167 > Change-Id: Ibfb4eb4fcdc7310fb6181c57f5c8d7a645ffad9d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3011420 > Reviewed-by: Peng Huang <penghuang@chromium.org> > Commit-Queue: Geoff Lang <geofflang@chromium.org> Bug: chromium:983167 Change-Id: I74e9a61484de77fd66e8dde8d50665fdbb470a95 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3016763 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 37c5d36f 2021-07-07T13:15:13 GL: Use glClear for robust init on Android. The allowClearForRobustResourceInit was used to work around driver bugs on other Windows and Linux and has a lot of CPU overhead. Re-enable it on Android (except some older Adreno). Bug: chromium:983167 Change-Id: Ibfb4eb4fcdc7310fb6181c57f5c8d7a645ffad9d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3011420 Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Peng Huang 5a2bd6fd 2021-05-03T14:43:35 Disable shader cache for PowerVR Rogue GPUs. We disable shader cache for Validating decoder in chrome, so port this workaround into ANGLE to see if it can fix crbug.com/1203652. Bug: chromium:1203652,chromium:480992 Change-Id: I08611c148217abc9c32d11fefe8a7d15873f3b30 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2867269 Commit-Queue: Peng Huang <penghuang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 5b314268 2021-06-15T17:37:45 Vulkan: Support OVR_multiview and OVR_multiview2 Multiview is supported in Vulkan simply by specifying the number of views in the render pass, and creating the appropriate image views. A number of changes to the way image views and render targets are stored are made to support those that don't cover the entire range of layers. One particular detail that is not implemented in this change is the use of queries in combination with multiview. Vulkan specifies that N queries are actually produced (N being the number of views) which must be summed by the application, but this is not currently done. Bug: angleproject:6048 Change-Id: I1d4a9894c232d3a93d7a97c9fa0eedc334e57469 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2967625 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Ian Elliott ecf27c71 2021-06-16T13:13:31 GL: Fix bug with: Skip redundant flushes. The ANGLE-into-Skia autoroller is blocked because of the following CL: https://chromium-review.googlesource.com/c/angle/angle/+/2956453 Michael Ludwig, a Skia engineer, found that this change fixes the problem and will unblock the auto-roller. Bug: chromium:1181068 Change-Id: I514b2762f6643e25b36aab0290a57af4abf3c660 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2965615 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Shahbaz Youssefi af1eed2e 2021-06-10T01:55:59 Vulkan: Generate gl_FragColor/Data declarations in AST gl_FragColor and gl_FragData are not available in Vulkan. Prior to this change, their declaration as webgl_FragColor and webgl_FragData was done in text. This change implements an AST transformation that declares a normal fragment output variable and replaces all references to these built-ins with those variables. Bug: angleproject:4889 Change-Id: If224e089dec25e4aa580beb135e1be2890de7887 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2953042 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 8333d061 2021-06-14T11:01:35 GL: Respect TexSubImage upload limits for robust init The chunked_texture_upload splits texture uploads for glTexSubImage calls but ANGLE uses glTexSubImage internally for robust resource initialization. Also chunk those uploads. Bug: chromium:1181068 Change-Id: Ia6eaac8117173946630f420b396cbc54c163b7ce Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2961230 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 222a81cf 2021-06-11T14:34:52 Reland: GL: Skip redundant flushes. Skip flushes when there is no work submitted since the last flush. Bug: chromium:1181068 Change-Id: Iab31f8949f7eb07dffb7b0930069cbb3ca69ef57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2956453 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Brandon Schade 69f2fb00 2021-03-08T10:49:31 Vulkan: Expose OES_geometry_shader extension Modify the symbol table generation script to accept a list of supported extensions. This allows for the EXT and OES versions of the geometry shader extension to be exposed. Test: angle_deqp_khr_gles31_tests --deqp-case=*geometry_shader* Bug: angleproject:3571 Change-Id: Ia7127a03dbd3fce78957f0505d3ce0c9bab6cb15 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2765011 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang c12f594a 2021-05-31T10:48:20 GL: Chunk uploads of texture data >120kb on Mac. Mac drivers are hanging and crashing after large glTexSubImage uploads. Chunk those uploads to avoid this problematic path in the driver. Bug: chromium:1181068 Change-Id: I7dca0b8e49420f015ff7830283c14283a0515826 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2928098 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jonah Ryan-Davis fe93fcdd 2021-05-27T13:28:18 Workaround Mesa 20 Intel driver bug with GLX_OML_sync_control Disable the use of this extension on Mesa 20/intel, it's causing GPU hangs. Bug: chromium:1187475 Change-Id: Ic7029b1f72bd0b0f4a2c11a7fceb0a59f51be8aa Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2920811 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Kenneth Russell 565bba3d 2021-05-26T17:58:18 Revert "GL: Skip redundant flushes." This reverts commit 7a38f3f50f3bb2f747ad3731d307f6af4c0552d2. Reason for revert: caused numerous test failures on FYI waterfall per http://crbug.com/1213507 . Original change's description: > GL: Skip redundant flushes. > > Skip flushes when there is no work submitted since the last > flush. > > Clone of geofflang's: > https://chromium-review.googlesource.com/2911879 > > Bug: chromium:1181068 > Change-Id: Idd8a1c61b814d746bf1e0225cfc4ca375a7bb224 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2915675 > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: chromium:1181068 Bug: chromium:1213507 No-Try: True Change-Id: Icd1662e4ea541375b44bddaa839a5241cdad5302 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2919503 Commit-Queue: Kenneth Russell <kbr@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang f410e81a 2021-04-20T14:26:54 GL: Implement multisampled_render_to_texture Bug: angleproject:2894, angleproject:5988 Change-Id: I17b55f0655d32d9f41cb55a0467b93a00fba751b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2841084 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 7a38f3f5 2021-05-21T15:07:44 GL: Skip redundant flushes. Skip flushes when there is no work submitted since the last flush. Clone of geofflang's: https://chromium-review.googlesource.com/2911879 Bug: chromium:1181068 Change-Id: Idd8a1c61b814d746bf1e0225cfc4ca375a7bb224 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2915675 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev 835bcb1e 2021-05-08T13:24:58 Vulkan: Support GL_EXT_texture_sRGB_RG8 For completeness, added mappings of R8_SRGB and R8G8_SRGB to OpenGL and Metal. Bug: angleproject:4932 Change-Id: Ic8e44e3a94c114e985f6965fcd43fbcb8071432d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2880661 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 5a0925de 2021-05-14T15:25:07 GL: Recreate textures on eglReleaseTexImage. Texture data should be reset on eglReleaseTexImage but ANGLE sometimes skipped this because it generated GL errors on Mac. Instead, delete and recreate the native texture to make sure ANGLE doesn't hold any references. Bug: chromium:1181068 Change-Id: I1252b0900361852f66f73b8c9d20a29c53897ee4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2897544 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Geoff Lang bccb0d56 2021-05-11T13:53:05 Add messages for framebuffer completeness errors. This also creates a common code path for all framebuffer completeness errors (FramebufferStatus::Incomplete) which helps for adding a debug breakpoint. Bug: angleproject:5949 Change-Id: Ib102dbf86e020777e56c6dc6b78dda8ebdba2127 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2888110 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang ce89d99f 2021-04-29T12:03:30 GL: Flush after framebuffer change on Mac 9th gen Intel GPUs Speculative fix for crashes during flush on Mac. Mirrors the flush_on_framebuffer_change workaround in Chrome from http://crbug.com/783979 Bug: chromium:1181068 Change-Id: Ic84b1bfc44babf27016b306393da308d504d7fd9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2859984 Reviewed-by: Peng Huang <penghuang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Peng Huang 19f24ede 2021-04-26T18:05:31 Disable workderContext on Android Bug: chromium:1202928 Change-Id: I54c4c28c30714fea60b4b6f3dd3ec49101341602 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2851362 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Peng Huang be2f7b1c 2021-04-20T13:54:47 Unbind fbo before context switching for PowerVR GPUs Imagination GL drivers are buggy with context switching. We need to ubind fbo to workaround a crash in the driver. Bug: chromium:1187513 Change-Id: Ie5142b5f43a3f23a9743ba7af0d90567fedd00d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2841083 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Geoff Lang b574643e 2021-04-19T12:47:05 D3D11: Skip blits if there is no intersection of dest areas Blit11 would clip the destination rectangle with the destination size but ignore the result. gl::ClipRectangle returns false when the rectangles do not intersect at all, indicating the blit can be skipped. This could lead to an out-of-bounds write to the GPU memory for the destination texture. Mark ClipRectangle as nodiscard to prevent future issues. Bug: chromium:1199402 Change-Id: I260e82d0917b8aa7e7887f2c9f7ed4b1a03ba785 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2836786 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cody Northrop 14f8918c 2021-04-16T09:17:29 Migrate more scripts to python3 Test: python3 scripts/run_code_generation.py Bug: angleproject:5707 Change-Id: I5abae69c1c6bf03cc418f10beaabc80288fa1c94 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2828979 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Jonah Ryan-Davis 2d873e0c 2021-03-01T14:38:39 GL: Workaround to sanitize amdgpu renderer strings. On Linux with the amdgpu driver, the GL_RENDERER string contains precise kernel and DRM version info. We should sanitize this info before using these strings for user privacy. Bug: chromium:1181193 Change-Id: I047d1abf5b51412b4258a021761cc450385ef0fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2727658 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 18c6d628 2021-03-09T13:46:13 GL: Support VAOs without native VAOs. Share the default VAO state between all frontend VAO when there is no native VAO support. Forcefully sync state every time a new frontend VAO is bound. Bug: angleproject:5577, chromium:1167179 Change-Id: Ieaedb5108ad28fc78e7e58b74495639c5246bb05 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2665266 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Peng Huang <penghuang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev ad55bdbe 2021-04-02T22:59:07 GL: Align emulated ETC1 handling with other backends Use emulatedEtc1 limitation to hide it from WebGL. Bug: chromium:1048244 Change-Id: Id2fd6b5d934f3caeb455e8f0fc198445e8c00084 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2803136 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Jonah Ryan-Davis e1ff28d4 2021-03-12T13:35:42 GLX: Always call XSync on creation/destruction of WindowSurfaces ANGLE was checking that it had opened the connection before calling XSync upon initialization. However, clients may pass in a connection and ANGLE must sync after creating a GLXWindow with the connection. This wasn't happening and was causing issues in Chrome. Bug: chromium:1172803 Change-Id: Ieb2cbfaa226f6d066030f42d8e25b1d9c34779f7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757507 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Peng Huang f16fd9ea 2021-03-25T21:33:31 Only enable framebufferMultisample with framebufferBlitANGLE Based on [1], GL_ANGLE_framebuffer_multisample requires GL_ANGLE_framebuffer_blit, so only enable framebufferMultisample with framebufferBlitANGLE. [1] https://www.khronos.org/registry/OpenGL/extensions/ANGLE/ANGLE_framebuffer_multisample.txt Bug: chromium:1192060 Change-Id: I44e8310d5a94578c0bb7e1d30a7276657965366c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2785394 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Peng Huang 90e3d86c 2021-03-22T12:49:26 Disable timestamp queries for Mali-G31 and older GPUs Bug: chromium:1178333 Change-Id: I8f21cd1c8f815a5cd7344778d2d1b28710dc6763 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2779211 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Mohan Maiya 81dcf078 2021-03-08T11:21:31 Reland "Vulkan: Support EXT_sRGB_write_control" This is a reland of 6073af536cf627742696823edc82c9b0a481a8bc with 2 changes - 1. Don't enable the extension even in nonConformant mode 2. Don't enable VK_KHR_image_format_list for swiftshader Original change's description: > Vulkan: Support EXT_sRGB_write_control > > Implement support for EXT_sRGB_write_control. This extension > requires VK_KHR_image_format_list to be supported. > > The spec requires this functionality to work with glBlitFramebuffer > as well but support for that will be added in a follow up change. > As such, this extension is only exposed in non-conformant mode. > > Bug: angleproject:5075 > Tests: SRGBFramebufferTest.*Vulkan* > Change-Id: I59b38f6cd810a3d0d67ec29f4f19c25f65f70862 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617243 > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:5075 Change-Id: I8e149d196a39c3c4769bfa8690792f3c53831299 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2762647 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Peng Huang c99e405c 2021-03-12T12:39:27 Disable timestamp queries for some GPUs on Android Copy some workaround from chromium. Bug: chromium:702980,chromium:477514,chromium:462553,chromium:1178333 Change-Id: I9acb6ef49c91193a9e6bb03c6fc5eabf336cba9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2756728 Commit-Queue: Peng Huang <penghuang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Peng Huang 2b7fdb62 2021-03-04T13:20:32 Reland "Fix bindFramebuffer problem with GLES2 devices" This is a reland of 92049513f46e2d4bc09d47d00f63d64fdb25a220 Original change's description: > Fix bindFramebuffer problem with GLES2 devices > > GLES2 and OpengGL 2 don't support GL_{DRAW,READ}_FRAMEBUFFER. > Always uses GL_FRAMEBUFFER for them. > > Bug: chromium:1167731 > Change-Id: Iab75a27b4c47d0bdaa2ec18a9019fd2d2535b04d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2737062 > Commit-Queue: Peng Huang <penghuang@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: chromium:1167731 Change-Id: I530a47fa3367ca98dbde24e3084515d5562ac8b0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743664 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Peng Huang 7ee24229 2021-03-03T15:16:07 Reland "Fix two issues with GLES2 devices" This is a reland of c0ed204de972c76a5428834c94aaa34fd2953329 Original change's description: > Fix two issues with GLES2 devices > > * make sure maxColorAttachments is greater than 0 > * Do not sync read buffer if maxDrawBuffers is 0 > > Bug: chromium:1167731 > Change-Id: Icd0fb5e65ec6ffdc0d6f6325ccd1207958922254 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2733268 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Peng Huang <penghuang@chromium.org> Bug: chromium:1167731 Change-Id: Iccd7b0986c4728e362fccaeda6fbeff2860d888c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743665 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Peng Huang b27740f3 2021-03-09T16:15:15 Revert "Vulkan: Support EXT_sRGB_write_control" This reverts commit 6073af536cf627742696823edc82c9b0a481a8bc. Reason for revert: crbug.com/1186140 Original change's description: > Vulkan: Support EXT_sRGB_write_control > > Implement support for EXT_sRGB_write_control. This extension > requires VK_KHR_image_format_list to be supported. > > The spec requires this functionality to work with glBlitFramebuffer > as well but support for that will be added in a follow up change. > As such, this extension is only exposed in non-conformant mode. > > Bug: angleproject:5075 > Tests: SRGBFramebufferTest.*Vulkan* > Change-Id: I59b38f6cd810a3d0d67ec29f4f19c25f65f70862 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617243 > Commit-Queue: Mohan Maiya <m.maiya@samsung.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Bug: angleproject:5075,chromium:1186140 Change-Id: Ib0d4d60fe7434fb950f99db2c210aab9af7d2d0e No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743663 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Peng Huang <penghuang@chromium.org>
Peng Huang 2d07b04d 2021-03-09T15:23:25 Revert "Fix bindFramebuffer problem with GLES2 devices" This reverts commit 92049513f46e2d4bc09d47d00f63d64fdb25a220. Reason for revert: crbug.com/1186140 Original change's description: > Fix bindFramebuffer problem with GLES2 devices > > GLES2 and OpengGL 2 don't support GL_{DRAW,READ}_FRAMEBUFFER. > Always uses GL_FRAMEBUFFER for them. > > Bug: chromium:1167731 > Change-Id: Iab75a27b4c47d0bdaa2ec18a9019fd2d2535b04d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2737062 > Commit-Queue: Peng Huang <penghuang@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> Bug: chromium:1167731, chromium:1186140 Change-Id: I1425bc9cf4145887193b7d18f956d6fbf07ce028 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743661 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Peng Huang <penghuang@chromium.org>
Peng Huang 02a9d011 2021-03-09T15:23:52 Revert "Fix two issues with GLES2 devices" This reverts commit c0ed204de972c76a5428834c94aaa34fd2953329. Reason for revert: crbug.com/1186140 Original change's description: > Fix two issues with GLES2 devices > > * make sure maxColorAttachments is greater than 0 > * Do not sync read buffer if maxDrawBuffers is 0 > > Bug: chromium:1167731 > Change-Id: Icd0fb5e65ec6ffdc0d6f6325ccd1207958922254 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2733268 > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Peng Huang <penghuang@chromium.org> Bug: chromium:1167731 Change-Id: Ibd05424889feac0bdb7293426ab41eb1f4753b35 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2743662 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Peng Huang <penghuang@chromium.org>
Peng Huang 9bc9ac8d 2021-03-04T08:18:54 Disable worker contexts on Android emulator Bug: chromium:1184692 Change-Id: I1b15e24d0cddd287f32ecb7f28568658f16b776d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2735375 Commit-Queue: Peng Huang <penghuang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Peng Huang 92049513 2021-03-04T13:20:32 Fix bindFramebuffer problem with GLES2 devices GLES2 and OpengGL 2 don't support GL_{DRAW,READ}_FRAMEBUFFER. Always uses GL_FRAMEBUFFER for them. Bug: chromium:1167731 Change-Id: Iab75a27b4c47d0bdaa2ec18a9019fd2d2535b04d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2737062 Commit-Queue: Peng Huang <penghuang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Mohan Maiya 6073af53 2021-03-08T11:21:31 Vulkan: Support EXT_sRGB_write_control Implement support for EXT_sRGB_write_control. This extension requires VK_KHR_image_format_list to be supported. The spec requires this functionality to work with glBlitFramebuffer as well but support for that will be added in a follow up change. As such, this extension is only exposed in non-conformant mode. Bug: angleproject:5075 Tests: SRGBFramebufferTest.*Vulkan* Change-Id: I59b38f6cd810a3d0d67ec29f4f19c25f65f70862 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2617243 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Peng Huang 4efe33e3 2021-03-04T07:45:20 Fix two GL_OES_texture_half_float related problems with GLES2 * Fix incorrect ASSERT in formatutilsgl.cpp * CheckInternalFormatRenderbufferRenderability() and CheckSizedInternalFormatTextureRenderability() may cause GL errors, we should clear them. Bug: chromium:1174074 Change-Id: Ieef5e79b68f317833b459da34cc2e5362f813304 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2735374 Commit-Queue: Peng Huang <penghuang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Peng Huang c0ed204d 2021-03-03T15:16:07 Fix two issues with GLES2 devices * make sure maxColorAttachments is greater than 0 * Do not sync read buffer if maxDrawBuffers is 0 Bug: chromium:1167731 Change-Id: Icd0fb5e65ec6ffdc0d6f6325ccd1207958922254 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2733268 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>
Alexey Knyazev a272a8ac 2021-03-07T20:04:49 Fix PVRTC1 frontend validation PVRTC1 texture dimensions must always be powers of two. Moreover, Apple hardware requires them to be squares. Bug: angleproject:5731, angleproject:2634 Change-Id: I5fcdc364b37d17b60cf772c21ba38795272236fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2741585 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Peng Huang a73818aa 2021-03-03T12:41:58 Workaround a GL_OES_depth32 bug on Android emulator Bug: chromium:1184261 Change-Id: I7aac7c696ff2d08dc2aaac86abc1c3b0e54cda1c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2733287 Commit-Queue: Peng Huang <penghuang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jeff Vigil 22fc9523 2021-02-03T15:32:48 EGL: implement EGL_EXT_buffer_age Add extension flag. Add Validation check to surface query. Enable extension for vulkan. Modify AcquireNextImage to ++frame count and tag images with frame number. Buffer age is the difference between current frame count and the tagged frame number on the buffer. getBuffeAge may need to trigger AcquireNextImage to be current. Pass through egl extension and query. Add EGLBufferAgeTest Test: angle_end2end_test --gtest_filter=EGLBufferAgeTest Test: angle_deqp_egl_tests --deqp-case=dEQP-EGL.functional.buffer_age.* Bug: angleproject:3529 Change-Id: I0cb94be1c3e85d6f33e82a6a1ccdc9731b6a7f23 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2684724 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gert Wollny fb7a2445 2021-02-12T09:29:11 libANGLE: Declare copy operator if copy constructor is defined If the copy constructor is defined then the copy assignment must also be defined, but we can use the default here. v2: Don't inline because the chromium-style errors out on this Bug: angleproject:4486 Change-Id: Iec0f63342244249da32b455b49a0b89b6558cab9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2690953 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 4f639a7e 2021-02-27T17:36:25 Fix Ozone backend build flags. Broken by http://crrev.com/c/2405806 ANGLE_USE_GBM must be defined in Display.cpp, not just GL backend. This also requires depending on libdrm for its headers. Bug: angleproject:3943, chromium:1181952 Change-Id: I4650d7806435413184b36c820cc6d06992f7f5cf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2726575 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 73afaf1e 2021-02-26T18:08:08 Add EGL_WINDOW_BIT to all Ozone configs' EGL_SURFACE_TYPE Ozone's EGL windows are emulated, so we can always create one, thus setting EGL_WINDOW_BIT in all configs is safe. This is now required because in http://crrev.com/c/2378922 EGL_WINDOW_BIT becomes a requirement to be able to run tests. Previously Ozone's configs copied native EGL_SURFACE_TYPE, which was either 0 or having just EGL_PBUFFER_BIT. Bug: chromium:1181952, chromium:1034840 Change-Id: Ic2b14b43b3c32b47ea05d9d8da9fba7439f14d19 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2725273 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>