145 Commits

Author SHA1 Message Date
Shahbaz Youssefi
2d5fb09d7f Stubs for EGL_ANGLE_external_context_and_surface
Bug: angleproject:5509
Change-Id: I8e2395784abcd2b4e3e1f888e70a879ef49287bc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4706026
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2023-07-25 16:16:54 +00:00
Alexey Knyazev
94ceedb7e8 Add GL_EXT_texture_compression_astc_decode_mode stubs
Bug: angleproject:8254
Change-Id: I2a839139b5738710e32842b04db35eab8fb04687
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4679683
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-07-12 10:27:03 +00:00
Shahbaz Youssefi
4439593002 Make various state setting entry points lockless
These entry points only set context-local state and thus don't require
locking.

Bug: angleproject:8224
Change-Id: I428c23cc862e9356d571bc085b5df0bf48017175
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4661700
Reviewed-by: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-07-06 23:38:50 +00:00
Alexey Knyazev
b7a5714f11 Add polygon mode extension stubs
* Added NV_polygon_mode

* Specified a portable polygon mode extension
  implementable on all ANGLE backends

Bug: angleproject:1791
Bug: angleproject:8132
Change-Id: I018aaaf1fb43ec16910859b152049e02169ede91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4492684
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
2023-05-01 21:21:01 +00:00
Vikas Soni
b5fa872897 Add extension to skip texture renderability validation in ANGLE.
Add a new extension to skip the texture renderability
validation in ANGLE.

Bug: angleproject:0000
Change-Id: Ia9e5a1eff233f5aced4706b7d3c183058d474c41
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4455549
Auto-Submit: vikas soni <vikassoni@chromium.org>
Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: vikas soni <vikassoni@chromium.org>
2023-04-25 22:28:47 +00:00
Chris Dalton
f2e13539b5 Implicitly enable PLS dependency extensions
The ANGLE_shader_pixel_local_storage implementation makes internal use
of various other extensions. These extensions must be implicitly enabled
when ANGLE_shader_pixel_local_storage is in use. In this CL:

* Convert ANGLE_shader_pixel_local_storage and
  ANGLE_shader_pixel_local_storage_coherent to requestable extensions.

* Implicitly enable the dependency extensions, including each other, at
  the time either of these extensions is enabled.

Bug: angleproject:7279
Bug: chromium:1421437
Change-Id: I26acbda776fe7045ea99d4f1e3df445e7a5cfd7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306526
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
2023-03-10 10:02:46 +00:00
Alexey Knyazev
52ba6071e1 Add EXT_texture_filter_minmax stubs
Bug: angleproject:8072
Change-Id: Idfc2f2ff0eff7b0f6c131c37aeb53fb04019257d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4315865
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
2023-03-08 18:54:12 +00:00
Alexey Knyazev
a2efea13c9 Add ANGLE_stencil_texturing
This extension allows texturing of the stencil
component of a packed depth stencil texture on
OpenGL ES 3.0 contexts.

Trivially exposed on backends that support
OpenGL ES 3.1, which requires this feature.

Adjusted the tests to check for the new
extension string instead of the context
version.

Bug: angleproject:8051
Change-Id: I4d833acbc72e7374bde91d4c861598a0fdaf9b90
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4295312
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
2023-03-01 18:17:38 +00:00
Alexey Knyazev
1ca860acad Add extension stubs
* GL_EXT_conservative_depth
* GL_EXT_depth_clamp
* GL_EXT_render_snorm

Bug: angleproject:8046
Bug: angleproject:8047
Bug: angleproject:8048
Change-Id: I7deb4f25f76008103c2754747db2d90be880b6ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4296803
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2023-03-01 05:30:38 +00:00
Alexey Knyazev
e2cf65ed96 Implement QCOM_render_shared_exponent
Fixed: angleproject:8043
Change-Id: Ia76b8e4b60a640180bae77cba523142749051398
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4289140
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2023-02-28 23:52:20 +00:00
Alexey Knyazev
dd1cf777e6 Add EXT_texture_mirror_clamp_to_edge entry points
Bug: angleproject:7968
Change-Id: I04b0c5d7b5148fbaca24d77a2c8688ea7a96cb64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4262073
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Auto-Submit: Alexey Knyazev <lexa.knyazev@gmail.com>
2023-02-21 23:25:32 +00:00
Mohan Maiya
1d9b8d802e Reland "Add support for glShaderBinary"
This is a reland of commit 228973e731
with the following fixes -

1. Apply patch from Yuly to fix chromium build errors
2. Fix ShaderBinaryTest instantiation call
3. Add ShaderBinaryTest to expectations file for IOS

Original change's description:
> Add support for glShaderBinary
>
> This patch adds the following -
> 1. ANGLE_shader_binary extension and GL_SHADER_BINARY_ANGLE token.
> 2. Compiler support to generate shader binaries.
> 3. Update compiler to use SH_SPIRV_VULKAN_OUTPUT as output type for
> Vulkan translator.
> 4. Support to load GL_SHADER_BINARY_ANGLE binaries.
> 5. end2end tests for glShaderBinary.
>
> Tests: ShaderBinaryTest*
> Bug: angleproject:7833
> Change-Id: I191d5ba7c4d5304696f5e743c851dc945fa57858
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4137306
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: Charlie Lao <cclao@google.com>

Bug: angleproject:7833
Change-Id: I21135c52e2bae955342a99aff5631ba0e687eff1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4195852
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2023-01-27 00:27:14 +00:00
Sean Risser
0133b6f186 Add GL_ARM_shader_framebuffer_fetch builtins
Bug: b/242419750
Bug: angleproject:7882
Change-Id: I85582ad21e58e448b740789ec88f783c8b95ee01
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4189028
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Sean Risser <srisser@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2023-01-26 18:50:48 +00:00
Yuly Novikov
0c9cbf39f5 Revert "Add support for glShaderBinary"
This reverts commit 228973e731.

Reason for revert: breaks compile on ANGLE into Chromium roll
https://cr-buildbucket.appspot.com/build/8790942326644064097
https://cr-buildbucket.appspot.com/build/8790942759045412865
https://cr-buildbucket.appspot.com/build/8790942417069789217
Leaks detected on ASAN
https://cr-buildbucket.appspot.com/build/8790946657703508337

Original change's description:
> Add support for glShaderBinary
>
> This patch adds the following -
> 1. ANGLE_shader_binary extension and GL_SHADER_BINARY_ANGLE token.
> 2. Compiler support to generate shader binaries.
> 3. Update compiler to use SH_SPIRV_VULKAN_OUTPUT as output type for
> Vulkan translator.
> 4. Support to load GL_SHADER_BINARY_ANGLE binaries.
> 5. end2end tests for glShaderBinary.
>
> Tests: ShaderBinaryTest*
> Bug: angleproject:7833
> Change-Id: I191d5ba7c4d5304696f5e743c851dc945fa57858
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4137306
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: Charlie Lao <cclao@google.com>

Bug: angleproject:7833
Change-Id: Ice19576acbc1351810ff0cd769ac17ad6c0abdf3
No-Try: true
No-Presubmit: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4197375
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
2023-01-26 12:15:06 +00:00
Mohan Maiya
228973e731 Add support for glShaderBinary
This patch adds the following -
1. ANGLE_shader_binary extension and GL_SHADER_BINARY_ANGLE token.
2. Compiler support to generate shader binaries.
3. Update compiler to use SH_SPIRV_VULKAN_OUTPUT as output type for
Vulkan translator.
4. Support to load GL_SHADER_BINARY_ANGLE binaries.
5. end2end tests for glShaderBinary.

Tests: ShaderBinaryTest*
Bug: angleproject:7833
Change-Id: I191d5ba7c4d5304696f5e743c851dc945fa57858
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4137306
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
2023-01-25 22:13:01 +00:00
Alexey Knyazev
9bd37934e0 Add EXT_polygon_offset_clamp entry points
Bug: angleproject:7957
Change-Id: Ida28b852b1db3e6017b6e91a9424381eb8fe29f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4169943
Auto-Submit: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2023-01-16 16:00:50 +00:00
Alexey Knyazev
067ace47d0 Add ANGLE_clip_cull_distance extension
Added an extension spec.

Trivially exposed it on GL, Vulkan, and D3D11.

Adjusted tests and validation to allow no cull
distance support for this extension string.

Removed extra built-in variable definitions.

Bug: angleproject:7904
Change-Id: Ic60772dfe28132c316eaa29aadc1afd66e3b0fa7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4114290
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
2022-12-23 01:57:59 +00:00
Gregg Tavares
be9e8e7b03 Add EGL_ANGLE_wait_until_work_scheduled extension
We're changing eglReleaseTexImage so it calls
flushCommandBuffer(mtl::NoWait) instead of
flushCommandBuffer(mtl::WaitUntilScheduled)
and then adding an extension to allow us to
WaitUntilScheduled.

This is because Chrome calls eglReleaseTexImage for
every canvas and having it WaitUntilScheduled per call
is very slow. So instead we'll call eglWaitUntilWorkScheduledANGLE
once which will effectively wait just once.

Bug: angleproject:7890
Change-Id: I87bc9f9a1a7f4a0f99d93736cc3083799e76afeb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4109311
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
2022-12-17 02:33:59 +00:00
Jamie Madill
dc62b3eef6 Capture/Replay: Add trace interpreter.
Also adds a self-test using the retrace script.

Bug: angleproject:7752
Change-Id: I1985b47250bef99726d2ca2d90bef859208e357e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3965128
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
2022-10-21 23:12:02 +00:00
Jamie Madill
fd45cec30b Entry Points: Move enum helper to registry_xml.
This will make it accessible to other generators.

Bug: angleproject:7752
Change-Id: I91bc9a4d6c919266ea329f66d271bf881d99d17a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963364
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2022-10-20 22:27:40 +00:00
Jamie Madill
ad2fbc7da4 Roll third_party/OpenGL-Registry/src/ 11d7b7bae..5bae8738b (5 commits)
Also removes our copy of gl.xml now that upstream patches are merged.

11d7b7baeb..5bae8738b2

$ git log 11d7b7bae..5bae8738b --date=short --no-merges --format='%ad %ae %s'
2022-09-29 sunserega2 [xml] Fixes for defined but unused enum groups (#520)
2022-09-29 julius_hager Added group PixelType to multiple-enums (#529)
2022-09-29 gnl021 EXT_separate_depth_stencil: Explicit unsupported cases (#531)
2022-09-29 jmadill Add enum groups for ANGLE use cases. (#538)
2022-09-29 syoussefi Clarify that PLS doesn't allow leak from outside framebuffer (#540)

Created with:
  roll-dep third_party/OpenGL-Registry/src

Bug: angleproject:6461
Change-Id: I6b7d8471144babe5cdd465c64574804f85c9e4f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3937049
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Auto-Submit: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2022-10-07 20:43:23 +00:00
Constantine Shablya
e82eaff91f Stubs for paletted images
Bug: angleproject:7599
Change-Id: Idb49f8ba07ebd3b6cad461fa9e90b856af666183
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3909396
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Constantine Shablya <constantine.shablya@collabora.com>
2022-09-22 16:11:44 +00:00
Dan Glastonbury
a89f678f8a EGL: Implement ANGLE_metal_shared_event_sync on metal
Implement creation of fence sync object taking an external
MTLSharedEvent and optional value to use when signaling completion of
prior commands.

Extended end2end test suite with metal shared event test cases.

Test: angle_end2end_tests --gtest_filter=EGLSyncTestMetalSharedEvent.*
Bug: angleproject:7561
Change-Id: I0e72b5417275a20a24e535670ceb995ecc87abcb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3865060
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
2022-09-21 01:42:23 +00:00
Shahbaz Youssefi
de73f7cd7d Introduce GL_ANGLE_logic_op
This extension exposes the desktop GL glLogicOp function as a GLES
extension.  This is supported by Vulkan through the logicOp feature as
well.

The goal is to directly use this extension in GLES1 emulation where the
backend supports it, avoiding a more costly fallback.

Bug: angleproject:3862
Change-Id: I7ed436cdf401437157ca9724168849b4c819b91b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3898310
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2022-09-20 04:02:18 +00:00
Jamie Madill
64f41972a9 Use canonical gl.xml and update enum to string function.
This replaces our copy of gl.xml with the upstream canonical copy.
Note that one patch is required before we can remove ANGLE's copy:

https://github.com/KhronosGroup/OpenGL-Registry/pull/538

Because the upstream version uses a new method of enum groups, we
also update our enum-to-string generator to use the new groups.
This new code includes many more enums and groups in the mapping.

Bug: angleproject:6461
Change-Id: I1c0ab44c36afce8db04c9661b377bbe5762c913e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3856649
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2022-08-29 20:29:27 +00:00
Jamie Madill
f6842cc2cd Revert override for desktop GL extensions in gl.xml.
Instead override the supported APIs in registry_xml.py, which
will transfer to using the canonical gl.xml. Note these are
desktop-GL-only extensions that ANGLE exposes in GLES:

GL_ARB_sync
GL_NV_robustness_video_memory_purge

Bug: angleproject:6461
Change-Id: I25778149ecfc3cb4be0aca2104c08273c260c564
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3856648
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Jamie Madill <jmadill@chromium.org>
2022-08-25 20:23:05 +00:00
Jamie Madill
5d62c05e26 Use canonical Khronos registry XML files for auto-gen.
This switches ANGLE to use the upstream XML files for the CL, EGL
GLX and WGL APIs. Since gl.xml has a few more significant diffs
from the upstream version, that work will come in another CL.

This also removes an ANGLE EGL ext that was added upstream.

Bug: angleproject:6461
Change-Id: I29ead5edc13a4256d1f702c330a5d3d233502cd4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3854318
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2022-08-25 17:35:24 +00:00
Eddie Hatfield
d89c027e7c Add unimplemented GLX entry points to desktop GL
Test: Run glxgears and hit unimplemented in ANGLE

Bug: angleproject:7533
Change-Id: Ic7ed7506b6d0c5ef5022ae6899cbd6c4d351b178
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3852631
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Eddie Hatfield <eddiehatfield@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
2022-08-24 21:26:01 +00:00
Chris Dalton
15cc001307 Add a GL_ANGLE_shader_pixel_local_storage extension
Plumbs through "GL_ANGLE_shader_pixel_local_storage" and
"GL_ANGLE_shader_pixel_local_storage_coherent" extension strings
advertised by ANGLE and stubs out an initial spec document. This change
doesn't add any new procedures or shader constructs, but it does allow
the PLS tests to start checking for the real extension strings and
requiring the GL_ANGLE_shader_pixel_local_storage extension.

Bug: angleproject:7279
Change-Id: I36877fe4117185a2121f803288123cd69a447cf3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3739590
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
2022-07-15 20:39:03 +00:00
Constantine Shablya
b257d62cdf Add GL_NV_read_depth_stencil
Bug: angleproject:4688
Change-Id: I44d5846f1ae5382b8c046e59643da4c0bf38e135
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3702356
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Constantine Shablya <constantine.shablya@collabora.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2022-06-15 03:44:55 +00:00
Faye Zhang
06ff0e3cb0 Implement GL_EXT_base_instance
Added new extension GL_EXT_base_instance to registry_xml.py
and auto-generated the entry point function calls for the
following functions introduced by the extension:
* GL_DrawElementsInstancedBaseVertexBaseInstanceEXT
* GL_DrawElementsInstancedBaseInstanceEXT
* GL_DrawArraysInstancedBaseInstanceEXT

Bug: angleproject:6983
Change-Id: I36167faf3ca98e42acf787dbf09ee7052e15e358
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3691952
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Faye Zhang <ffz@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
2022-06-07 23:58:38 +00:00
Jamie Madill
389ae6b9ae Add extension for read-only DS feedback loops.
This will facilitate testing. Also moves some feedback loop tests
from FramebufferTest to a specialized test class.

Bug: angleproject:4778
Bug: angleproject:4969
Change-Id: I61235f2663a58644bf506254a869f550f1706de3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3634726
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2022-05-12 16:23:31 +00:00
Mohan Maiya
ea76cb0f5e Vulkan: Add entry points for GL_QCOM_shading_rate
Bug: angleproject:7172
Change-Id: I837d2697d95c44f47a2fab7411cfd87a4ec65e90
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3599873
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
2022-04-25 18:24:55 +00:00
Jamie Madill
24c641dce9 Add stubs for AMD_performance_monitor.
We can piggy-back on this extension to report internal ANGLE
performance counters to the ANGLE tests.

Includes a minor variable de-duplication in the EP generator.

Bug: angleproject:4918
Change-Id: I4a76aea957b423a36a90349643bd50a4e1905849
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3497537
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2022-03-08 15:48:28 +00:00
Antonio Caggiano
b92ebdb73a EGL: Add code-gen for dmabuf extensions
Add code-gen for EGL_EXT_image_dma_buf_import and
EGL_EXT_image_dma_buf_import_modifiers.

Bug: angleproject:7065
Change-Id: Ib1bd2a881f11e96b1e7e5128975bdba3bdc41e0f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3495122
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2022-03-01 18:21:28 +00:00
Constantine Shablya
3f0a28ba6e Add entry points for EGL_KHR_partial_update
Bug: angleproject:6960
Change-Id: If248b7ef5ebacd7dfb8c612e5a9106ba0060282e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3455787
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2022-02-11 17:51:22 +00:00
Brandon Schade
38fada3510 Vulkan: Add support for OES_primitive_bounding_box
Add OES version of the primitive bound box extension

Bug: angleproject:3576
Test: dEQP-GLES31.functional.primitive_bounding_box.*
Change-Id: Ie44d952992a68dfffd5c124dda8dd11069f0c1e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3425086
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Brandon Schade <b.schade@samsung.com>
2022-02-01 19:26:04 +00:00
Brandon Schade
7dda50fc00 Add frontend for ANDROID_extension_pack_es31a
- Add entry to registry_xml file
- Add handling in the DirectiveHandler

Bug: angleproject:3608
Change-Id: I1cc32a4a97fd9974f65786a9a972b4b541abf658
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3388405
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Brandon Schade <b.schade@samsung.com>
2022-01-18 22:26:47 +00:00
Lingfeng Yang
926b43e751 Reland: Frontend: separate lock in swap prep
Swapchain-based backends like Vulkan might block a lot in
vkAcquireNextImageKHR, which is bad for overall fast progress if we also
hold the global EGL lock there.

This CL starts to split the global EGL lock. We release the EGL lock
when performing vkAcquireNextImageKHR, and only maintain a lock for
surfaces.

This is done via a new custom entry point, EGL_PrepareSwapBuffers, so
that we can control how the global lock is used throughout the entire
call.

Bug: angleproject:6851
Change-Id: I095cd8b3bdbb13c842cab0a46148e2122582cdfd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3373426
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
2022-01-11 22:23:19 +00:00
Cody Northrop
ae1a56b679 Vulkan: Turn on GL_EXT_shader_framebuffer_fetch for ARM
On ARM, coherent is the default behavior of framebuffer fetch, so
we can expose the GL extension.

Tests: Dead By Daylight app and trace
Bug: b/201764768
Bug: angleproject:6870
Bug: angleproject:6872
Change-Id: I0f98c57e20619d73d1507c4655e7f9bb8c10a53a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3371244
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
2022-01-07 19:00:54 +00:00
Maksim Sisov
c7446ac423 Add support for GL_MESA_framebuffer_flip_y 1/*
LaCrOS, which is same as ChromeOS, relies on this
extension and uses that with WebGL content.

However, when LaCrOS uses ANGLE, the extension is
not exposed and the WebGL content is y-inverted as
direct scanout is always used.

There are two bugs - 1) ANGLE should expose the
extension so that direct scanout is possible
(this CL fixes the issue. 2) LaCrOS shouldn't rely
on the extension if it's not available (a bug to
be fixed in Chromium).

This particular CL consists of autogen files with
framebufferParameteriMESA &&
getFramebufferParameterivMESA in Context
marked as UNIMPLEMENTED. And also unimplemented
validation.

Bug: chromium:1231934
Change-Id: Id617846b0412f579df5b4ace6cb33c1ec6d403df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343492
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Maksim Sisov <msisov@igalia.com>
2021-12-16 15:34:05 +00:00
John Cunningham
42bd4fc29a Metal: add ANGLE_metal_create_context_ownership_identity.
This Metal-specific EGL extension allows a given context
and the GPU resources it allocates to be associated with
a particular task ID on the system, for system-level
bookkeeping purposes.

Bug: angleproject:6795
Change-Id: I19ee0993564169b01c4a450e63dcfacd339b98b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3335172
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
2021-12-14 03:36:09 +00:00
Yuly Novikov
f64f9546ae Reland "Decouple gl_BaseVertex/gl_BaseInstance uniforms"
This reverts commit 10e5f34d14.

Reason for revert: exonerated from flaky crash suspect

Original change's description:
> Revert "Decouple gl_BaseVertex/gl_BaseInstance uniforms"
>
> This reverts commit 36bf1ebe5e.
>
> Reason for revert: suspect causing flaky crashes
>
> Bug: angleproject:6763
>
> Original change's description:
> > Decouple gl_BaseVertex/gl_BaseInstance uniforms
> >
> > These are builtin uniforms removed in
> > https://github.com/KhronosGroup/WebGL/pull/3278
> >
> > Decouple them from the original ANGLE_base_vertex_base_instance
> > extension.
> >
> > Make a new ANGLE_base_vertex_base_instance_shader_builtin
> > extension for these builtin uniforms.
> >
> > Bug: angleproject:3402
> > Change-Id: I77b93917976ce435db9c578c0ade37bff18a42b0
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3290304
> > Commit-Queue: Shrek Shao <shrekshao@google.com>
> > Reviewed-by: Geoff Lang <geofflang@chromium.org>
> > Reviewed-by: Kenneth Russell <kbr@chromium.org>
>
> Bug: angleproject:3402
> Change-Id: I75830baa14cf4e7c53750fd14ff76501145b4823
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3315610
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
> Commit-Queue: Shrek Shao <shrekshao@google.com>

Bug: angleproject:6763
Bug: angleproject:3402
Change-Id: Ie436dc5d55364e464897d407a53b793941cd5d0b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3321703
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
2021-12-07 21:17:07 +00:00
Shrek Shao
10e5f34d14 Revert "Decouple gl_BaseVertex/gl_BaseInstance uniforms"
This reverts commit 36bf1ebe5e.

Reason for revert: suspect causing flaky crashes

Bug: angleproject:6763

Original change's description:
> Decouple gl_BaseVertex/gl_BaseInstance uniforms
>
> These are builtin uniforms removed in
> https://github.com/KhronosGroup/WebGL/pull/3278
>
> Decouple them from the original ANGLE_base_vertex_base_instance
> extension.
>
> Make a new ANGLE_base_vertex_base_instance_shader_builtin
> extension for these builtin uniforms.
>
> Bug: angleproject:3402
> Change-Id: I77b93917976ce435db9c578c0ade37bff18a42b0
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3290304
> Commit-Queue: Shrek Shao <shrekshao@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Kenneth Russell <kbr@chromium.org>

Bug: angleproject:3402
Change-Id: I75830baa14cf4e7c53750fd14ff76501145b4823
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3315610
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
2021-12-04 00:59:38 +00:00
Shrek Shao
36bf1ebe5e Decouple gl_BaseVertex/gl_BaseInstance uniforms
These are builtin uniforms removed in
https://github.com/KhronosGroup/WebGL/pull/3278

Decouple them from the original ANGLE_base_vertex_base_instance
extension.

Make a new ANGLE_base_vertex_base_instance_shader_builtin
extension for these builtin uniforms.

Bug: angleproject:3402
Change-Id: I77b93917976ce435db9c578c0ade37bff18a42b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3290304
Commit-Queue: Shrek Shao <shrekshao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
2021-12-02 00:01:49 +00:00
Tim Van Patten
ef65edf2f2 Add extension: ANGLE_rgbx_internal_format
Add the extension ANGLE_rgbx_internal_format, which exposes the ANGLE
internal format GL_RGBX8_ANGLE. The format GL_RGBX8_ANGLE enables
emulating RGB8 formats with RGBA8 within ANGLE.

This also renames the format GL_RGBX8_ANGLEX to GL_RGBX8_ANGLE, since
it's being exposed.

Bug: angleproject:6690
Test: Texture2DTestES3.TextureRGBXImplicitAlpha1
Change-Id: I5548a3578a14e2f2a4006bbf59983b01f694b7f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3296625
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2021-11-30 01:41:05 +00:00
Peng Huang
a5e391d744 Add GL_ANGLE_vulkan_image extension
glAcquireTextures & glReleaseTextures are added for sharing
texture ownership with an external API.

Bug: chromium:1264439
Change-Id: If46d8d230b4f611768b5ff1187674509e42f01e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3293921
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
2021-11-29 21:09:46 +00:00
Peng Huang
e00ad44329 Add EGL_ANGLE_vulkan_image extension
This extension is for exporting VkImage from EGLImage.
The VkImage must be used with the same VkDevice used by ANGLE
Vulkan backend.

Bug: chromium:1264439
Change-Id: I222d900465cf2716d94fc64f06e240390ec518ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3285025
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
2021-11-25 17:48:33 +00:00
Amirali Abdolrashidi
ae3f67ab4a Implement GL_EXT_multi_draw_indirect
* Auto-generated the code to lay the foundation for
the following functions:
  * multiDrawArraysIndirect()
  * multiDrawElementsIndirect()

Bug: angleproject:6439
Change-Id: I7ab5111692376229515e0d6d9e6148909ce9a8a1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3276042
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2021-11-12 23:01:15 +00:00
Jeff Vigil
d3e6771671 EGL: EGL_KHR_lock_surface3
Add new extension KHR__lock_surface3
Add new interfaces for locking and unlocking a surface.

Test: angle_end2end_test --gtest_filter=EGLLockSurface3Test

Bug: angleproject:6062
Change-Id: Ic40708db4db552107025635540a0c62f956d741e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3161447
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2021-11-09 17:29:34 +00:00