src/libGLESv2


Log

Author Commit Date CI Message
Raja  Wasim Husain 8ef76b6a 2025-08-04T12:34:17 CL/Vulkan: cl_khr_external_memory extension (pt.2) - Make this extension visible if Vulkan implementation support features supportsExternalMemoryFd and/or supportsExternalMemoryDmaBuf - Implemented APIs clEnqueueAcquireExternalMemObjectsKHR and clEnqueueReleaseExternalMemObjectsKHR - Updated clCreateBufferWithProperties to handle external memory file descriptor. Bug: angleproject:378017028 Change-Id: I1751982c8e9b2cd07b7e251cc54db5dcd1bcda20 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6843980 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Raja  Wasim Husain 6c160cad 2025-08-04T12:32:36 CL/Vulkan: cl_khr_external_memory extension (pt.1) - Make this extension visible if Vulkan implementation support features supportsExternalMemoryFd and/or supportsExternalMemoryDmaBuf - Implemented APIs clEnqueueAcquireExternalMemObjectsKHR and clEnqueueReleaseExternalMemObjectsKHR - Updated clCreateBufferWithProperties to handle external memory file descriptor. Bug: angleproject:378017028 Change-Id: Idff08808bc0227b5f98b84c2086b68541665146d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785087 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand f92d6f4b 2025-04-07T17:42:46 CL: Route API trace to logcat for Android For better logging when running Android APKs Bug: angleproject:433980940 Change-Id: Ib924262a92728d0a9711a5b98f051634341859d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6785090 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shufen Ma 5fb77159 2025-08-12T15:21:25 Add stubs for GL_ARM_texture_unnormalized_coordinates Bug: angleproject:352345942 Change-Id: I05e2b0c83f07bfe35eb58fc657b834f6253d4cb9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6839660 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Shufen Ma <Shufen.Ma@arm.com> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Charlie Lao d8dc3cc2 2025-08-02T12:02:20 Remove shared context lock from glVertexAttrib{I}Format This CL removes shared context lock from glVertexAttribFormat() and glVertexAttribIFormat() APIs, since they no longer access anything outside VertexArrayPrivate. The main problem I had run into is validation code. Before this CL, ValidateIntegerVertexFormat() needs context's mStateCache for mCachedVertexAttribTypesValidation and mCachedIntegerVertexAttribTypesValidation. Given these two cached value are constant after initialization, in this CL, I have moved them to PrivateStateCache. PrivateStateCache argument is added to ValidateVertexAttribFormat() and ValidateVertexAttribIFormat() to get them access to mCachedIntegerVertexAttribTypesValidation. Bug: b/433331119 Change-Id: Ifc3fbed32b4d3722c335dd2c393bc6519ed0b544 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6822032 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao ae4aead5 2025-07-24T16:35:38 Remove sharedContextLock from glVertexAttrib{Divisor|Binding} With prior CLs all the functions used by glVertexAttribDivisor*, glVertexBindingDivisor and glVertexAttribBinding only access VertexArrayPrivate. This CL removes shared context lock from these APIs. Bug: b/433331119 Change-Id: Ib1632797c53d2cd7a31c21e93c0e69385c71a27f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6814157 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Charlie Lao fa29f604 2025-07-02T13:23:31 Remove sharedContextLock from {Enable|Disable}VertexAttribArray VertexArray objects are per context objects. In theory they do not need to protected by shared context lock. The reason we are taking locks because all these functions end up accessing Buffer object which are shared. In prior CLs we have removed subject observer usage from VertexArray which means VertexArray no longer accessed from other thread. In prior CLs we also split VertexArray into two classes: VertexArrayPrivate which has no buffer, and VertexArray which is subclass from VertexArrayPrivate and owns buffer. In this CL, glEnableVertexAttribArray and glDisableVertexAttribArray calls no longer take shared context lock. ContextPrivateEnableVertexAttribArray and ContextPrivateDisableVertexAttribArray are called from these two APIs and they only have access to StatePrivate. State Private holds a VertexArrayPrivate pointer, which means they do not have anyway to access buffer objects. The main challenge I run into here is mCachedActiveClientAttribsMask, mCachedActiveBufferedAttribsMask, mCachedActiveDefaultAttribsMask, mCachedHasAnyEnabledClientAttrib, mCachedNonInstancedVertexElementLimit, mCachedInstancedVertexElementLimit. These StateCache variable needs to be updated when these two APIs are called, and calculating these variable needs access to buffer object. The solution here is adding a bool mIsCachedActiveAttribMasksValid in the PrivateStateCache so that instead of immediately update these mCached* variable, we just set mIsCachedActiveAttribMasksValid to false. Then whenever any of these mCached* variable is needed, we will check mIsCachedActiveAttribMasksValid and calculate these cached variables. It adds one if check when accessing these caches, but the other benefit is that we may have avoided duplicated calculation when multiple states changed. Bug: b/433331119 Change-Id: I3227c72bc40501712db93fb3d540b835f07150b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514436 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Panfeng Hou 2ef85c24 2025-07-09T17:13:52 Vulkan: Add support for GL_EXT_fragment_shading_rate Add support for GL_EXT_fragment_shading_rate. Bug: angleproject:420310117 Change-Id: I7b368afc45baf8551c222b2569991269117d385b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6726817 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Panfeng Hou <panfeng.hou@arm.com> Reviewed-by: Charlie Lao <cclao@google.com>
Yuxiang Qian 6a03109f 2025-07-09T18:24:31 Refine getCompressionRate As Vulkan spec states, vkGetImageSubresourceLayout should not be called for the android swapchainimage when the image is not bound to memory. Refine the path of getCompressionRate to make sure at least swapchainimage[0] has been initialized when it is been called. Bug: angleproject:433057375 Change-Id: I80b68874686940c0ef77df97b928b0e153c5bbf8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6774721 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Panfeng Hou 251ffe62 2025-07-15T17:37:30 Vulkan: Add support for built-in gl_ShadingRateEXT Add support for built-in gl_ShadingRateEXT of GL_EXT_fragment_shading_rate Bug: angleproject:420310117 Change-Id: Ie11b139a0371b5995f1533a85e02c590cd36109c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6733750 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shufen Ma 154e5711 2025-06-24T15:28:28 Refine validation for GetQueryObjectuiv Spec says that after a graphics reset has occurred on a context, subsequent GL commands on that context (or any context which shares with that context) will generate a CONTEXT_LOST error. Exceptions to this behavior include: Any commands which might cause a polling application to block indefinitely will generate a CONTEXT_LOST error, but will also return a value indicating completion to the application. Such commands include: - GetSynciv with pname SYNC_STATUS ignores the other parameters and returns SIGNALED in values - GetQueryObjectuiv with pname QUERY_RESULT_AVAILABLE ignores the other parameters and returns TRUE in params Bug: angleproject:427242336 Change-Id: I86fd6f93a2c2a4b60c6a1e19637ee6382fadac7b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6666083 Auto-Submit: Shufen Ma <Shufen.Ma@arm.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Charlie Lao <cclao@google.com>
Panfeng Hou 9a436772 2025-06-04T16:47:51 Vulkan: Add entry points for GL_EXT_fragment_shading_rate Bug: angleproject:420310117 Change-Id: I8a8efad6cad810b2cb0b600106f6496070495605 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6620340 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 92dec961 2025-05-15T00:00:00 Enforce validation consistency for lockless entry points Bug: angleproject:406922380 Change-Id: If4e6051d0ac465f4ae8abca0a62cad14d1d739b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6624114 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 8dbb0997 2025-05-15T00:00:00 Autogen support checks for ANGLE_base_vertex_base_instance Bug: angleproject:409484297 Change-Id: Id730b55709e27910f2908294637e17cde9a791b8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6597178 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev 79cef542 2025-05-15T00:00:00 Autogen EGL image extension entry points Bug: angleproject:409484297 Change-Id: I0e4a83c5e902f010a66fefa4fa6cc4169ab5529f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6596617 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 4c964bc7 2025-05-15T00:00:00 Roll third_party/OpenGL-Registry/src/ 5bae8738b..200cea403 (74 commits) https://chromium.googlesource.com/external/github.com/KhronosGroup/OpenGL-Registry/+log/5bae8738b23d..200cea4030cb Additional changes: * Removed obsolete workarounds for mismatching signatures between CreateShaderProgramvEXT and CreateShaderProgramv. * Aligned GL backend bindings for GL_OVR_multiview entry points with the specs. * Updated include/GLES2/gl2ext.h. Bug: angleproject:409484297 Change-Id: Ifbb63dcc4bad312b22a368455a121e088b346fab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6596941 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 6462880b 2025-05-15T00:00:00 Autogen support checks for query extensions Bug: angleproject:409484297 Change-Id: I91e6b7318c62868e65d48ceb380b7c2d53c447ac Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6596569 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev bdaf87cf 2025-05-15T00:00:00 Enforce validation consistency Asserted that: * Exactly one error is generated if validation fails. * No error is generated if validation passes. Supported only for entry points with autogenerated context support checks. Lockless entry points are excluded for now. Bug: angleproject:406922380 Change-Id: I7549c8011768b1aa311d843b1658005ca3aba3b6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6568559 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 1e45cbe3 2025-04-24T00:00:00 Update entry points autogen template Used the same template for the always supported entry points as for entry points with conditional support. No functional changes. Bug: angleproject:409484297 Change-Id: I2077dec903a3bb52a69085acf5781c0df9ea935c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6574234 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev d0616d54 2025-04-24T00:00:00 Autogen support checks for multiview commands Bug: angleproject:409484297 Change-Id: Ia86f30922480dd1d8793868581629669cc83719f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6547155 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 51dd4087 2025-04-24T00:00:00 Autogen support checks for draw_elements_base_vertex commands Also fixed command support conditions: * With an exception of MultiDrawElementsBaseVertexEXT, command and extension suffixes must match. Updated tests to account for that. * DrawElementsInstancedBaseVertex{EXT,OES} additionally require ES 3.0 or any of the instancing extensions. * DrawRangeElementsBaseVertex{EXT,OES} additionally require ES 3.0. Updated tests to account for that. * MultiDrawElementsBaseVertexEXT additionally requires GL_EXT_multi_draw_arrays. Bug: angleproject:409484297 Change-Id: I50b72ebc7d66128bcfd5671334094b7e90cb329c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6524686 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 86ce0f0e 2025-04-24T00:00:00 Add EXT_multi_draw_arrays stubs Bug: angleproject:414506477 Change-Id: Idc3ca950b88c9632268922ec7a311936916c2a43 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6522405 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 618bc398 2025-04-24T00:00:00 Add EXT_draw_instanced stubs Bug: angleproject:416241733 Change-Id: I6dfb0ff1e941fdd33387e06920c97ba4232e8820 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6519383 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev 8b388145 2025-04-24T00:00:00 Autogen support checks for robust client memory entry points No functional changes. Bug: angleproject:409484297 Change-Id: I9d27f8444b01b7881336ffcf3f480018efbe90e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6519381 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 2d61c576 2025-04-24T00:00:00 Autogen support checks for PLS entry points No functional changes. Bug: angleproject:409484297 Change-Id: I0224ecc29efde87c92c75a8120d0227c95775c1b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6512841 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 9e6f44bc 2025-04-18T00:00:00 Autogen support checks for extension entry points As a side effect, added missing support checks for the following extension entry points: - GL_ANGLE_memory_object_flags - TexStorageMemFlags2DMultisampleANGLE - TexStorageMemFlags3DANGLE - TexStorageMemFlags3DMultisampleANGLE - GL_EXT_buffer_storage - BufferStorageEXT - GL_EXT_external_buffer - BufferStorageExternalEXT - GL_EXT_robustness - GetnUniformfvEXT - GetnUniformivEXT - ReadnPixelsEXT - GL_EXT_separate_shader_objects - ProgramUniform4ivEXT - ProgramUniform4uivEXT - GL_MESA_framebuffer_flip_y - FramebufferParameteriMESA - GetFramebufferParameterivMESA - GL_OES_matrix_palette - CurrentPaletteMatrixOES - LoadPaletteFromModelViewMatrixOES - MatrixIndexPointerOES - WeightPointerOES - GL_OES_query_matrix - QueryMatrixxOES - GL_OES_texture_cube_map - GetTexGenf*OES - TexGen*OES - GL_QCOM_framebuffer_foveated - FramebufferFoveationConfigQCOM - FramebufferFoveationParametersQCOM - GL_QCOM_texture_foveated - TextureFoveationParametersQCOM Bug: angleproject:409484297 Change-Id: I7fe05afe2a4575ae5d913bf9f60d5575404f808b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6494399 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev ae70513d 2025-04-18T00:00:00 Remove NamedBufferStorageExternalEXT entry point OpenGL ES does not support DSA. Bug: angleproject:407932145 Change-Id: If5f544de2b43e05888415a4fc805ad6065d4408b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6495409 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 846dcf86 2025-04-18T00:00:00 Autogen context version checks for 2.0 entry points Bug: angleproject:409484297 Change-Id: I03b323ba5b8f9d45d41c0ff0188b3f7a7004722e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6490226 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Kenneth Russell cdb34025 2025-04-25T12:09:14 Move robust APIs for PLS into robust_client_memory sections. These two entry points are at the intersection of GL_ANGLE_shader_pixel_local_storage and GL_ANGLE_robust_client_memory. Move them into the robust_client_memory section to simplify autogenerated validation. Rerun code generation. Fixed: angleproject:413597061 Change-Id: Icac160dbc7ab4088ee90471af60bb2e5ab3e1b87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6492427 Auto-Submit: Kenneth Russell <kbr@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 56b62c62 2025-04-18T00:00:00 Include entry point names in context lost error messages Also added "likely" hints to valid context branches. Bug: angleproject:412384507 Change-Id: I6fc2c4a5934b767f55742f4657fec7ae954f1387 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6479959 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 61bfe86c 2025-04-04T00:00:00 Autogen context version checks for 1.0 entry points * Added missing extension support checks for glPointSizePointerOES and glDrawTex*OES. * Removed incorrect validation from ValidateDepthRangex. * Removed unused functions. Bug: angleproject:409484297 Change-Id: I9c12be4c0ed60f943fa3c16a8e23693d8fb7a76f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6479833 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev db12f43b 2025-04-04T00:00:00 Autogen context version checks for 3.0 entry points * Added a missing version check for the GetBufferParameteri64v entry point. * The following commands are now rejected on ES 2.0 even if the GL_OES_texture_3D extension is enabled: * CompressedTexImage3D * CompressedTexSubImage3D * CopyTexSubImage3D * TexImage3D * TexSubImage3D Bug: angleproject:409484297 Change-Id: I82374157596fd292efbf67c6bb582eb874348b73 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6469895 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 9db4bf6e 2025-04-04T00:00:00 Autogen context version checks for 3.1 & 3.2 entry points As a side effect, added missing version checks for the following OpenGL ES 3.2 entry points: * BlendEquationi * BlendEquationSeparatei * BlendFunci * BlendFuncSeparatei * ColorMaski * Disablei * DrawElementsBaseVertex * DrawElementsInstancedBaseVertex * DrawRangeElementsBaseVertex * Enablei * GetDebugMessageLog * GetPointerv * IsEnabledi * MinSampleShading * PopDebugGroup * PrimitiveBoundingBox * PushDebugGroup Bug: angleproject:409484297 Change-Id: I6be7e3a4a8ba9b99595f4930d9c3a1fa1b4c6154 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6441552 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 595d79e4 2025-04-04T00:00:00 Do not expose GL_ARB_sync That extension does not exist in OpenGL ES. Fixed: angleproject:409717088 Change-Id: I82234f0051c2c646ef15c22e1a0da1704ef3a35b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6448233 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Chris Dalton 0f356a34 2025-04-02T14:14:43 Update invalidation commands to disable PLS Previously, commands that flush or invalidate tiled memory were specified to generate an error if issued while PLS was active. Remove all provisions around Flush(), Finish() and ClientWaitSync(), and add a test to ensure these commands have no effect on PLS. The reason we can make this change now is because we no longer support EXT_shader_pixel_local_storage, which previously prevented us from allowing these 3 commands. Update the invalidation commands to disable PLS instead. This is more in line with the general design pattern of PLS. Update the wording of the spec to reflect this better organization. Also clean up some legacy code that was no longer used. Bug: angleproject:40096838 Change-Id: I9687deaf17a583f8757ffcd050eda154b4e7a949 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6427324 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Alexey Knyazev eb52b568 2025-03-28T00:00:00 Remove unsupported 1D and DSA entry points OpenGL ES does not support 1D textures, removed TexStorage1DEXT. OpenGL ES does not support DSA, removed EGLImageTargetTextureStorageEXT. Added an explicit command blocklist. Added hashes for *_vulkan_secondaries_* def files. Fixed: angleproject:407932145 Change-Id: Iec34fa475f34a0fa832a49223c51ff1f87b1915d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6426049 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Alexey Knyazev f20c0c5e 2025-03-28T00:00:00 Remove obsolete desktop GL files Bug: angleproject:370937467 Change-Id: Ibd15c982b646627fb8154d92ad2e0e35f98fbd32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6428567 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov cbfa8e38 2025-03-31T09:51:33 Add "likely" hints to common validation paths This makes the hot path assembly more local. I can't tell if there is an observable effect of just doing this on the regular build performance, but this generally makes sense and reduces the assembly difference with PGO builds. Bug: b/383305597 Change-Id: Icb191e8e927217d9db4cb505d5cd6f76536403e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6416263 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Chris Dalton b600a42c 2025-03-13T15:18:40 Remove the PLS allow list All the interactions with render passes have been properly solved now, and there is no longer a need for the allow list. Bug: angleproject:40096838 Change-Id: I0219fb8824820e076c128f10f49c85f0f76270ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6355312 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Chris Dalton fbb1829d 2024-12-08T01:46:39 Allow glClear while PLS is active It just makes sure to not clear any draw buffers that may be in use for pixel local storage. Bug: angleproject:402810076 Bug: angleproject:40096838 Bug: angleproject:42266150 Change-Id: I60a573d5e9e5dbadce12d79e3f4b6fc57747e655 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6312336 Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Chris Dalton 97083463 2025-03-10T09:07:16 Polish PLS interactions with xform feedback & QCOM_tiled_rendering For the simplest integration with WebGL, it was decided that glBeginTransformFeedback() and glStartTilingQCOM() should implicitly disable PLS, whereas glBeginPixelLocalStorageANGLE() should fail if either of these modes are active. Bug: angleproject:40096838 Change-Id: I859a496c99c60c5b040c5eac542f43d85872eb30 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6339788 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Chris Dalton 4b39a6a9 2025-03-08T14:16:29 Generate errors for framebuffer invals during PLS Generate GL_INVALID_OPERATION for InvalidateFramebuffer, InvalidateSubFramebuffer, and DiscardFramebufferEXT (and add them to the PLS allow list so we can test the new validation). This is part of a final preparation before deleting the allow list. Bug: angleproject:40096838 Change-Id: If8ffb9c1998ca739798171ae4643a3c9ad3ee049 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6335750 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Chris Dalton 1ead4cbd 2025-03-07T09:49:21 Allow texture modification commands while PLS is active Just do a little extra validation and bounce modifications if they would modify an active PLS plane. Bug: angleproject:40096838 Change-Id: I6f27951f5d0ef5dfaf23b5a005a2d94a749e2c4f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6337703 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Shahbaz Youssefi 5b343e8f 2025-03-11T11:35:08 Vulkan: Remove support for Stadia Bug: angleproject:42262714 Change-Id: Icae5fe828fe4e0bcd287d297df1bc586708ef86e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6344390 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Amirali Abdolrashidi c21e31a1 2025-02-20T17:32:17 Add handling null input to eglGetProcAddress * Modified eglGetProcAddress() so it can handle a null input by returning nullptr. * Added a test for this case: * EGLReadinessCheckTest.GetProcAddressNullInput * Fixed some typos. Bug: angleproject:397720948 Change-Id: If55223b12831649252e2e06e47abaf8d3546c86f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6289249 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Chris Dalton be98f841 2024-11-30T02:11:05 Implicitly end PLS for framebuffer reads and writes In preparation for removing the PLS allow list, convert more problematic methods to the new paradigm of implicitly ending PLS instead of generating errors. Also simplify the disable logic for framebuffer modifications, and just blindly disable PLS for framebuffer updates, regardless of whether it's GL_READ_FRAMEBUFFER or GL_DRAW_FRAMEBUFFER. Bug: angleproject:40096838 Change-Id: Ie4390a219f5f05ef0a3d00f405d4914592726283 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6077335 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alex Dean c0d806b4 2025-02-10T23:01:33 CL: OpenCL support for ANGLE Capture/Replay Implementation of OpenCL Capture/Replay tool in ANGLE. Brief notes about the change: - Most meaningful changes for the capture process are made in src/libANGLE/capture/ - Most meaningful changes for replay are made in util/capture/ and src/tests/perf_tests/ - Many autogenerated files are changed/added to allow the capture of OpenCL objects & calls - The following applications were captured/replayed: benchmark_model, GeekBench Compute, GeekBench ML, AI-Benchmark, various OCL CTS tests - End2end test added to capture_tests. CapturedTestCL.MultiFrameCL/ES3_Vulkan Bug: angleproject:383841335 Change-Id: I55fdaa6cd6c7ba740aaa2351e4d29050059d6d1d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6102105 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov cfb430c8 2025-02-10T13:19:05 Remove angle::ErrorStream helper Most uses of the helper either use just the code or a fixed string, which compiles to a few instructions. Using this helper adds 200+ bytes of assembly to each use, due to the unneeded instantiation of ostringstream which allocates a buffer etc. The combined effect of this CL on an Android perf build is ~12KB (0.2%) reduction in size. The cases where the message is actually formatted are converted to an explicit use of ostringstream. Removing the helper so that the new code is explicit about the intent to use ostringstream, or an alternative way to format the message. Discovered accidentally while looking into size reduction due to __builtin_unreachable() Semi-automated code change, risk of copy-paste mistakes should be minimal. Bug: angleproject:394129077 Change-Id: I47c2642d750d31416b08a1cfa435d5463c294e35 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6250078 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Kimmo Kinnunen 49e2b5e2 2025-01-31T15:52:39 Support compiling without GetProcAddress Move GetProcAddress implementation next to the proc array. This way it is possible to not compile the implementation. Bug: angleproject:393513311 Change-Id: Ic9c9022ee74a7619bec25f1481fd9da68b14b119 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219320 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Igor Nazarov b5809efa 2025-01-16T17:56:47 Delay eglSwapInterval() effect until swap ... and fix resetting effect of `eglSwapInterval()` call by changing the `EGL_RENDER_BUFFER` attribute, and resetting desired shared present mode when calling `eglSwapInterval()`. Bug: angleproject:390333526 Change-Id: I473c7d4c5929e2179bbcd378b3695d10213644de Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6169922 Commit-Queue: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Shahbaz Youssefi bbc0d702 2024-12-27T07:44:01 Vulkan: Add entry points to lock the Vulkan queue ... which can be retrieved via EGL_ANGLE_device_vulkan. Otherwise the application is unable to use the VkQueue that is retrieved out of ANGLE from other threads (such as Chromium's DrDC feature). Bug: chromium:380295059 Change-Id: Ife80f54440777486f72fc61697a68fb0c2b2d0f7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6116046 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Roman Lavrov 465299fb 2025-01-06T16:49:15 context_private_call.cpp -> context_private_call.inl.h Most functions are trivial wrappers resulting in unnecessary forwarding calls. Most are called exactly once from entry points autogen. This _reduces_ the .so size by ~14KB and I'm seeing 1-2% better frame time in my driver_overhead_2 tests on a mobile device. Bug: b/383305597 Change-Id: I1f2a048e067c76993bacfbbce655fc1c898fdba7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6149814 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian a1be7e61 2024-11-26T14:39:18 Implement EGL_EXT_surface_compression This patch adds implementation of EGL_EXT_surface_compression to ANGLE, including new API eglQuerySupportedCompressionRatesEXT and adding EGL_SURFACE_COMPRESSION_EXT in EGLQuerySurface and EGLCreateWindowSurface/EGLCreatePlatformWindowSurface. Angle end2end test is added to verify the extension. Bug: angleproject:375496226 Change-Id: I06926930d94485a378fc831d552cf55fe7938a57 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6073355 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Yuxiang Qian fb743105 2024-11-26T14:37:39 Add stubs for EGL_EXT_surface_compression This patch adds stubs for EGL_EXT_surface_compression to ANGLE, including new API eglQuerySupportedCompressionRatesEXT and adding EGL_SURFACE_COMPRESSION_EXT in EGLQuerySurface and EGLCreateWindowSurface/EGLCreatePlatformWindowSurface. Bug: angleproject:375496226 Change-Id: I1962a11e8e3e5eb2cd5b13c5ba0f685781dfd015 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6073354 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 26414249 2024-11-28T00:00:00 Remove GetTexLevelParameter* from ANGLE_texture_multisample These functions are always provided by the GL_ANGLE_get_tex_level_parameter frontend extension. Fixed: angleproject:382291448 Change-Id: I59b4ccc56478f2e0931d1f5bd665cfdd5a34391e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6072222 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Chris Dalton cc841237 2024-11-29T13:45:50 Accept framebuffer modifications while PLS is active The only way for a WebGL implementation to know if PLS is actually active is to call glGetIntegerv(PIXEL_LOCAL_STORAGE_ACTIVE_PLANES_ANGLE) (because glBeginPixelLocalStorageANGLE() can fail). So the original behavior of not allowing glBindFramebuffer() et. al. while PLS was active created a state scenario that was expensive for the browser to track. Instead, just allow glBindFramebuffer() et. al., and implicitly disable PLS if they are called while it's active. Bug: angleproject:40096838 Change-Id: Ibd303f9f9950fb5b7f1add2d41882e4379c51e62 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6060301 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Igor Nazarov 65d674b0 2024-12-02T18:36:11 Vulkan: Must run UnlockedTailCall from flush and finish `glFlush` and `glFinish` may call `WindowSurfaceVk::swapImpl()` implicitly when the current Window Surface is in the single buffer mode. The `WindowSurfaceVk::swapImpl()` in turn may add unlocked tail call in order to perform CPU throttling. It seems, that CPU throttling is only possible if also enable the `EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID` attribute (using `VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR`). Without this attribute (`VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR`) `vkQueuePresentKHR()` performs implicit waiting for GPU, making ANGLE's throttling uncessary (the serial is already finished). This fix allows running the tail call from `glFlush` and `glFinish` (because these APIs are not performance critical). Alternative solution may instead perform the CPU throttling immediately if the `WindowSurfaceVk::swapImpl()` is called from the `WindowSurfaceVk::onSharedPresentContextFlush()`. Additionally, added "ASSERT(!any())" at the beginning of each entry point. This is to catch scenarios, if some API adds the unlocked tail call and for some reason exit without checking the assert of running the call. Test: angle_end2end_tests --gtest_filter=EGLAndroidAutoRefreshTest.SwapCPUThrottling/ES3_Vulkan_NoFixture Bug: angleproject:42266581 Change-Id: I418c552f6e95b4cfc01db738c9989533377f1050 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6063719 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Chris Dalton 7070a9e9 2024-11-20T00:21:16 Remove draw buffer validation clauses from PLS It was cumbersome to implement all this validation browser side for WebGL. Rather than making it an error to update blend and color mask on reserved PLS draw buffers, glBeginPixelLocalStorageANGLE() can just implicitly disable blend, and enable the color mask on overridden draw buffers. Later calls to enable blend or change the color mask on overridden planes are silently ignored until glEndPixelLocalStorageANGLE(). Bug: angleproject:40096838 Change-Id: Ic7e1c5113e7d3fad3b80d0178075df646540d743 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6045421 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Chris Dalton <chris@rive.app>
Panfeng Hou d57b1d30 2024-11-28T11:09:53 Vulkan: Support GL_OES_required_internalformat Only export 'GL_OES_required_internalformat' in GLES extension. Bug: angleproject:364069034 Change-Id: I6198b7b79fc2853c7585ebff183016ee110a25e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055198 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Xinyu Fang 5d3d299d 2024-11-25T16:35:51 Expose the required GLES1.0/1.1 extensions in ANGLE Exposed below extensions: GL_OES_texture_mirrored_repeat GL_OES_blend_subtract Bug: angleproject:380704155 Change-Id: Ib095f9bfaabda92bb2c588d633f1512e118f066e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038450 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Xin Yuan b6b826b3 2024-11-27T09:57:18 Add stubs for GL_EXT_EGL_image_storage_compression Bug: angleproject:352345943 Change-Id: I993a7908e868019852c0d682bf2131e46a2cf304 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6051521 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi c02e0184 2024-11-22T17:21:38 Add GL_ARM_rgba8 * It is a subset of GL_OES_rgb8_rgba8. Bug: angleproject:352352894 Change-Id: I07f031157344385c847cd229a85ebf59cc6dfcfc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6044333 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Neil Zhang 8a2b60b2 2024-11-06T17:13:16 Add stubs for GL_EXT_texture_storage_compression Bug: angleproject:352364583 Change-Id: I607c19c0c9bec7f0e3dd325e44b42e73f826b61c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5998012 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Kimmo Kinnunen f5b9e0ed 2024-11-11T16:06:30 Metal: Query MSL print env var with bool getter Use angle::GetBoolEnvironmentVar. Bug: angleproject:378404988 Change-Id: I45778690e215325e9e4eb67c6feefa9b17941f49 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6011902 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Yuxin Hu e5619a5c 2024-10-15T18:27:00 Use EGL sync global lock for all EGL*sync entrypoint calls To free EGL sync operations from waiting for other EGL calls to finish, we use a separate global lock for EGL*sync entrypoints. Below angle::SimpleMutex are added to protect resources that may have race condition due to being accessed by EGL*sync calls and non EGL*sync calls at the same time: 1. Display::mContextMapMutex that protects Display::mState.contextMap 2. static angle::base::NoDestructor<angle::SimpleMutex> anglePlatformDisplayMapMutex that protects static angle::base::NoDestructor<ANGLEPlatformDisplayMap> displays 3. static angle::base::NoDestructor<angle::SimpleMutex> devicePlatformDisplayMapMutex that protects static angle::base::NoDestructor<DevicePlatformDisplayMap> displays EGL_Terminate() entry point takes both global lock and global egl sync lock. This is to protect Display::mSyncMap, Display::mSyncPools, and Display::mSyncHandleAllocator being get cleared by thread 1 calling eglTerminate, while they are still accessed by thread 2 through a call such as eglCreateSync. So that we won't have thread 2 finish validating the sync object with syncID exists in Display::mSyncMap, but then find the mSyncMap.find(syncID) returns a nullptr due to the mSyncMap is cleared by thread 1. Same applies to EGL_LabelObjectKHR(), EGL_ReleaseThread(), ThreadCleanupCallback(). EGL_Initialize() writes to Display::mInitialized. This is read by EGL Sync API validation functions. EGL_Initialize() also takes both global lock and global sync lock to prevent race conditions between EGL_Initialize() and EGL Sync APIs. When ANGLE_CAPTURE_ENABLED is enabled, fall back to global lock, as the CaptureEGLCallToFrameCapture() touches many resources (e.g. mMaxAccessedResourceIDs, mFrameCalls) that could lead to race conditions without a global lock. Bug: b/362604439 Change-Id: Ic0d54a4cd66743bcd0f48f41f247dd223cff2f5e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5933570 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Igor Nazarov <i.nazarov@samsung.com> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Gowtham Tammana 84a24a1e 2024-07-02T11:56:25 CL: Implement clone for kernel object clCloneKernel() can be used to make a shallow copy of a kernel object. The returned object is an exact copy of the source kernel, with latest calls to arguments sets applied to the kernel. Implement a clone version at the front-end with replicating the `clSetKernelArg` called on the source kernel. The `clSetKernelArgsSVMPointer` and `clSetKernelExecInfo` are ignored as they are currently unsupported. Bug: angleproject:376023087 Change-Id: I2e21931d9ff799e35b153cffe91fd4a2adbbf88d Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5971715 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 60da450e 2024-09-20T17:56:55 CL: Implicit cmd queue submit on release From OpenCL spec (3.0): https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_flush_and_finish clReleaseCommandQueue perform an implicit flush of the command-queue. Bug: angleproject:8639 Change-Id: I0a3b0f3c602075fd2a6e1ac0310345b3d568df64 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5410931 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 028bb1cb 2024-10-03T00:00:00 Add EXT_texture_query_lod stubs Bug: angleproject:368275901 Change-Id: I34ab23630bc6c3d720acefa97e4c324f41fa61cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5922877 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi aa61c076 2024-10-08T12:14:13 Autogen files for GL_ARM_shader_framebuffer_fetch_depth_stencil Bug: angleproject:352364582 Change-Id: I3e736195be3a21c2ae48b4ab2922f9ae7bfcbf32 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916185 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Geoff Lang 492cf265 2024-09-27T13:44:22 Stubs for GL_blob_cache_angle Bug: chromium:370538323 Change-Id: Ib56b28c24305db8931f382b16a24975b7277fa7e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5900760 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi b16d105f 2024-10-03T10:25:32 Remove Desktop GL front-end support For Desktop GL applications, please use Zink! Bug: angleproject:370937467 Change-Id: Ie734634bb62a2e98c80e1b32d8b3d34624da3c04 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905428 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Alexey Knyazev 0cce8fd3 2024-09-12T00:00:00 Add EXT_texture_shadow_lod stubs Bug: angleproject:365108862 Change-Id: Ib879c2994871a41ad680bfe487593ea8ccbba7cc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5860118 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Hailin Zhang 8c12874c 2024-09-12T11:26:29 vulkan: add double buffer swapchain for fifo mode. Double buffer swapchain usually drop the performance. But at B* the default fps cap for silver device still at 30fps. This change is for reduce latency. Bug: b/311022968 Change-Id: Ida4044f439bbe3f235d53f5d1d2f945533cbb094 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5858255 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 4167a9a0 2024-08-29T23:38:05 Don't lock the context mutex if no flush in eglClientWaitSync Bug: b/362604439 Change-Id: Ic514bcb3824514b5fd82ebb14ab97286aeb6557c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5828262 Reviewed-by: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev e850656a 2024-08-29T00:00:00 Add EXT_separate_depth_stencil stubs Bug: angleproject:362780331 Change-Id: I378b5c9ff06a2c5e56d68ef93ed42e0351b5044e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5823195 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana ef6a3132 2024-06-25T17:30:03 CL: Return error code for not supported APIs The spec requires error codes to be reported for not supported API calls. Fixing to return relevant error codes. Bug: angleproject:359296611 Change-Id: Ia64bf2673446269c6557308c169f019c7dd67cc8 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5782397 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Marcin Radomski 85264808 2024-07-18T09:53:14 tls.h: check ANGLE_USE_ANDROID_TLS_SLOT to define GL TLS The definitions of ANGLE_ANDROID_GET_GL_TLS() macro were guarded by ANGLE_PLATFORM_ANDROID, but the use by ANGLE_USE_ANDROID_TLS_SLOT. This change makes it so both definition and the use use the same macro. Additionally, make libGLESv2/global_state.h include common/tls.h when ANGLE_USE_ANDROID_TLS_SLOT is defined, even if ANGLE_PLATFORM_ANDROID is missing. This will enable the use of Android TLS in builds that use bionic on systems that are not full Android (see bug for details). The change is supposed to have no impact on existing code. Bug: b/353262025 Test: treehugger Change-Id: I4406aa4642c4a589a53dd8e0ff6c41234942901b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5729840 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Roman Lavrov <romanl@google.com>
Geoff Lang fcf3a1c0 2024-07-02T16:33:28 GL: Allow shader compilation with cached translated source Write the translated shader source when serializing shaders. This does not increase the size of the shader cache because Vulkan only uses the compiledBinary field. Spawn a ShaderTranslateTask for loading shaders so the GL backend can compile the shader on the native driver. Bug: angleproject:350779978 Change-Id: I14413a7ca2a0d99653a1082f2c8b4a94cf58626a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5672740 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Amirali Abdolrashidi 0b888d50 2024-06-13T11:32:53 Add KHR_blend_equation_advanced_coherent * Added this extension to registry_xml.py. Bug: angleproject:42262258 Change-Id: I2d69982b9ec876e3c21346039ed78aa21b1a1896 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5634379 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Geoff Lang 92148c2c 2024-06-17T11:13:46 GL: Implement GL_EXT_clear_texture. This extension is useful because it allows clearing textures without changing the framebuffer. Chrome uses this on Android when it's available. Bug: angleproject:347047859 Change-Id: I765d9991c4549b3655446d9f51847d1095792dbd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5631810 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi d193d51b 2024-06-17T22:46:08 Replace issue ids post migration to new issue tracker This change replaces anglebug.com/NNNN links. Bug: None Change-Id: I8ac3aec8d2a8a844b3d7b99fc0a6b2be8da31761 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637912 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 2d8e15f8 2024-05-31T14:25:12 Add stubs for GL_QCOM_tiled_rendering Bug: angleproject:343900918 Change-Id: I77d742949565ebfecb5f4446db3510af4f94033c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5588629 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi 8042ebdc 2024-05-31T17:06:56 Add OES_tessellation_shader Bug: b/344030760 Change-Id: I49c5dd870a09cd6b43beea13c70b8c1a4266875b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5595610 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Amirali Abdolrashidi edaaacd9 2024-05-31T17:30:34 Add OES_gpu_shader5 Bug: b/344031022 Change-Id: Ib11b5835b566e299ce6a7a47a4e4a46bcfd670ad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5595608 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 147ba459 2024-05-30T00:00:00 Allow polygonMode* commands with active PLS Drive-by: * Test that polygonOffsetClampEXT is allowed when PLS is active. Fixed: angleproject:345253437 Change-Id: I5d9f60b3e70eaf8da19017a8b9d6c2592cb4f4f8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5601849 Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Alexey Knyazev 6968848e 2024-05-30T00:00:00 Remove PLS checks from GLES 1.x entry points Fixed: angleproject:345125742 Change-Id: If845ddb654221cfb88c3f69bb98e07dbee8b6b39 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5598770 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Roman Lavrov c8db5292 2024-05-31T19:35:32 Remove locks from most glUniform* calls Note: only the Vulkan backend claims to be thread safe. glUniform1i and glUniform1iv are kept locked as they might set samplers, which is more complicated. glUniformBlockBinding is a more complex state change with notifications. Other glUniform functions simply call setUniformImpl() or setUniformMatrixfv() in the vulkan backend, which as https://crrev.com/c/5588853 and https://crrev.com/c/5592968 show only update mDefaultUniformBlocks and mDefaultUniformBlocksDirty. This should be thread-safe as long as the application is not creating race conditions itself such as by changing the same object in parallel. This should yield a significant improvement in the driver_overhead_2 benchmark which is heavy on such calls. Bug: angleproject:8666 Bug: b/335295728 Change-Id: Iad1577b9ab2eb57b6a4599ec6d70fa90eb518e8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5588385 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Amirali Abdolrashidi ce6232fc 2024-05-21T11:15:51 Add KHR_robustness * From the spec, there are some differences between KHR_robustness and EXT_robustness (already in use). In this CL, the following are addressed: * Updating the EXT suffixes * Changing EXT to KHR for GLES * Removing EXT for GL * Adding GLGetnUniformuivKHR (no equivalent in EXT) * Added GL_KHR_robustness to the list of extensions. * The API implementations seem to be already in place. * Validation functions will be updated in a follow-up CL. Bug: angleproject:42262244 Change-Id: Ibbc1bc11ec08ac756f4a03d11f51ba1268d037a5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5555984 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 7ce42b42 2024-05-30T16:08:12 Skip Display::prepareForCall calls everywhere except Mac. Display::prepareForCall was added for CGL and EAGL backends which need to know when an EGL call on a new thread is about to happen. Making this virtual call on all EGL calls on all platforms adds overhead which we can avoid so compile out prepareForCall everywhere except Mac. Bug: angleproject:8434 Change-Id: I7b50463ed405a73eb993e18eb4f83434b4a4fd6e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5582015 Commit-Queue: Geoff Lang <geofflang@chromium.org> Auto-Submit: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 0e892a02 2024-05-30T14:07:47 EGL: Move egl surface timing calls into tail calls. eglGetCompositorTimingANDROID and eglGetFrameTimestampsANDROID can both take a lot of driver time to execute proportional to ANGLE's overhead. Bug: angleproject:42266858 Change-Id: I9b991f74a261b45aeb2aaf133fca7d22cabc41f8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5580877 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi f4140c76 2024-05-10T16:56:13 Remove share group lock from glBindBuffer This is a very hot function. Removing the share group lock from this function improves the driver_overhead_2 execution time by ~1ms on Pixel 6. Bug: angleproject:8667 Change-Id: I9ea04f48aa1d2d0efec21407374393e88a1316e3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5533081 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com>
Geoff Lang a70ef7fc 2024-04-25T14:19:50 Add EGL_ANGLE_no_error for disabling EGL validation. Chrome makes many small EGL calls that can have proportionally expensive validation. Bug: angleproject:8434 Change-Id: I4f4d0e6eff64839f76a0f7bf48e5c94b8df9d809 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5491459 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 071e1e83 2024-05-08T10:33:49 EGL: eglCreateSyncKHR uses a return value for the tail call eglCreateSyncKHR was duplicated in two lists for using a tail call and needing a return value tail call. Bug: angleproject:8434, chromium:338902974 Change-Id: I9dffeaec3468e4ea3f5ed7d885e9ef418e8d8da5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5525854 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Geoff Lang 038ad6c7 2024-04-23T13:23:04 EGL: Use unlocked tail calls for surface, sync and img calls EGL surface and sync calls can be expensive to do while holding the global lock on EGL. They are safe because the parameters are captured by value and the underlying EGL driver is also thread safe. EGL image creation also tends to be expensive and is called freqently by Chrome. Bug: angleproject:8434 Change-Id: I7e554fe2e3700d98469de267f7bbff1e96358c78 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5478229 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 884dc380 2024-04-24T16:46:01 EGL: Make eglGetCurrent(Context|Surface|Display) lockless. These functions access only egl::Thread state. Bug: angleproject:8434 Change-Id: I3dd6cd1f4fd145613f0be824e4f6e13815422997 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5485526 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi d9943e44 2024-04-09T23:53:48 Remove Program::syncState The last bit of responsibility still left in Program::syncState was to wait for post-link tasks for the sake of EGLBlobCacheTest tests. A new extension, GL_ANGLE_program_binary_readiness_query is created so that the wait can be done in the test itself. This extension is ultimately useful for applications as well, so they can avoid blocking the CPU by calling glGetProgramBinary prematurely. Bug: angleproject:8297 Change-Id: Ied6b755cb9b060198f82c7948bfd03441435a578 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5440302 Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: mohan maiya <m.maiya@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Charlie Lao <cclao@google.com>
Austin Annestrand 35c7e186 2024-04-03T14:31:59 CL: Introduce NDRange object/ops abstraction Create new FrontEnd type "NDRange" to encapsulate OpenCL's NDRange items. Update backend implementations to make use of this new object. Bug: angleproject:8650 Change-Id: I3c1549c50c85153b3ea77267e104eec04ba1bd93 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5421572 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Mohan Maiya 318e5e02 2024-03-24T08:17:56 Vulkan: Update EGL_EXT_buffer_age implementation 1. Buffer age is always 1 when swap behavior is EGL_BUFFER_PRESERVED. 2. WindowSurfaceVk::getBufferAge no longer acquires a swapchain image. See commit: b46cf6989f6fe8db5f0759001f633681a96fadde 3. It is valid to pass attributes of eglQuerySurface API to eglQuerySurface64KHR API 4. Add deadlock fix to eglQuerySurface64KHR Bug: angleproject:3529 Bug: angleproject:6851 Tests: EGLLockSurface3Test.QuerySurfaceAndQuerySurface64Parity* Tests: EGLBufferAgeTest.QueryBufferAge* Change-Id: Idf3c4fc08364f671fb02e99111be2beb7a1d9f3d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5389461 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: mohan maiya <m.maiya@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Steven Noonan c55c8ad2 2024-03-05T15:42:28 extension XML cleanup Add a bunch of missing extensions, commands, enums, and aliases to the extension XML files. These were missing when I generated a GL loader from the XML. Additionally, removing the unimplemented ANGLE_timer_query specification. Bug: angleproject:8432 Change-Id: I55b7393a313070719200c150a91b1751206ca2cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5347156 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Auto-Submit: Steven Noonan <steven@uplinklabs.net> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi f044aaf8 2024-03-02T00:51:33 Vulkan: Create instance/device without access to Display The feature overrides are now encapsulated in a struct, a reference to which is passed around until features are initialized. Additionally, some window system information needed to decide which extensions to use or workarounds to apply are passed around. This is a step towards decoupling RendererVk from egl::Display for direct use with OpenCL. Bug: angleproject:8564 Change-Id: Id6c5d1c3b38aafcd4397e54cc6cad32bf849eeda Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5335823 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>