| 
              
74cf6a3a
               | 
              
2023-07-12T14:44:17
               | 
              
               | 
              
Ensure lockless entry point validations only access private data
Bug: angleproject:8224
Change-Id: I19e867923b088879f9f37d0a3b4ff8b681470be0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4678352
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
               | 
            
            
              
   
               | 
              
9962f078
               | 
              
2023-07-11T15:39:50
               | 
              
               | 
              
Pass only context-private state to private entry points
This change ensures that the implementation for these entry points
cannot access anything other than context-private state.
Bug: angleproject:8224
Change-Id: I988672b138d861db25e91d71ab8c34baa4e8ebee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4678783
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
               | 
            
            
              
   
               | 
              
40111c68
               | 
              
2023-07-11T14:21:21
               | 
              
               | 
              
Rename context-local to context-private state
Bug: angleproject:8224
Change-Id: I1bb39475043f8fb14d683d11a038b4850692a8c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4678781
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
               | 
            
            
              
   
               | 
              
44395930
               | 
              
2023-07-05T11:59:23
               | 
              
               | 
              
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>
               | 
            
            
              
   
               | 
              
1328f2f3
               | 
              
2023-04-17T16:43:12
               | 
              
               | 
              
Vulkan: Destroy the surface without holding the EGL lock
This change defers surface destruction to the end of the entry point
that causes it so that it is done without holding the EGL lock.  This
works around a specific deadlock in Android.  On this platform:
- For EGL applications, parts of surface creation and destruction are
  handled by the platform, and parts of it are done by the native EGL
  driver.  Namely, on surface destruction, native_window_api_disconnect
  is called outside the EGL driver.
- For Vulkan applications, vkDestroySurfaceKHR takes full responsibility
  for destroying the surface, including calling
  native_window_api_disconnect.
Unfortunately, native_window_api_disconnect may use EGL sync objects and
can lead to calling into the EGL driver.  For ANGLE, this is
particularly problematic because it is simultaneously a Vulkan
application and the EGL driver, causing `vkDestroySurfaceKHR` to call
back into ANGLE and attempt to reacquire the EGL lock.
Since there are no users of the surface when calling
vkDestroySurfaceKHR, it is safe for ANGLE to destroy it without holding
the EGL lock.
Note that only eglDestroySurface and eglMakeCurrent may lead to the
destruction of a window surface.
Bug: b/275176234
Bug: angleproject:8127
Change-Id: I02dc52e53e150943457e3f503e7ef30469f96b05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428754
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
               | 
            
            
              
   
               | 
              
ef20f191
               | 
              
2023-03-29T14:05:04
               | 
              
               | 
              
Make the PLS allow list more permissive
Allow ClipControlEXT, FlushMappedBufferRange, Gen*, PolygonOffset*,
ProvokingVertexANGLE, and KHR_debug commands.
Allow caps DEPTH_CLAMP_EXT, CLIP_DISTANCE[0..7]_EXT.
Ban indexed caps besides BLEND, SCISSOR_TEST, SCISSOR_TEST_EXCLUSIVE_NV.
Clarify that the index restrictions on indexed caps only apply to BLEND.
Bug: chromium:1421437
Change-Id: Ibdb0acaebfa992ad37c928481d5ecb10496f22e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4382502
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
               | 
            
            
              
   
               | 
              
1174582a
               | 
              
2023-03-06T00:00:00
               | 
              
               | 
              
GL: Implement EXT_clip_control
The extension is trivially exposed
if the current context supports it.
* Added packed clip control enums
* Removed unused state query code
* Aligned symbol names with the specs
Bug: angleproject:8066
Change-Id: I9d106f39800658ecc75f4525ee93cb534dc49f9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4306770
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
               | 
            
            
              
   
               | 
              
9f693aa3
               | 
              
2022-10-22T14:45:59
               | 
              
               | 
              
Implement an allow list for PLS
In order to guarantee no data is lost while using the
EXT_shader_pixel_local_storage extension, we need to restrict
applications to a small subset of commands while pixel local storage is
active. This CL implements the allow list for GL entrypoints using
wildcard matching inside the code generator, and adds custom validation
for the more specific restrictions that go into effect when PLS is
active.
Bug: angleproject:7279
Change-Id: I5dd48bd93c10e8775f32be32a4fcf17855eb2f0e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3932552
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
               | 
            
            
              
   
               | 
              
4bfb749f
               | 
              
2022-10-10T20:59:48
               | 
              
               | 
              
Capture/Replay: Move shared trace code into src/common.
This will let them be accessible to the test harnesses. The
trace tests interpreter will need direct access to the classes
that we move in this CL.
This CL also moves the GLenum utils into the common folder,
where they were already used by some other tests.
Bug: angleproject:7752
Change-Id: I97ad607938ef29bc316f6d40098478e002ea8128
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963362
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
               | 
            
            
              
   
               | 
              
64f41972
               | 
              
2022-08-25T11:16:23
               | 
              
               | 
              
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>
               | 
            
            
              
   
               | 
              
98d5db70
               | 
              
2022-08-25T16:50:38
               | 
              
               | 
              
Add capture functions for desktop GL entry points
The parameter capture functions are left unimplemented for now.
Bug: angleproject:7533
Change-Id: Ief356e7401805cf9b417e1f5cc3790011237e03f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3858618
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Eddie Hatfield <eddiehatfield@google.com>
               | 
            
            
              
   
               | 
              
c54ed790
               | 
              
2022-07-21T10:38:47
               | 
              
               | 
              
Get desktop GL conformance tests to build
The target for these tests is angle_deqp_gl_tests.
Bug: angleproject:7533
Change-Id: I290822671d99da020f9a6a1f02bee43987644bf9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3766435
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Eddie Hatfield <eddiehatfield@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
               |