|
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>
|
|
897a5654
|
2024-10-16T10:32:16
|
|
CL: Rename isSet/isNotSet to intersects/excludes
In particular, `isSet` was checking if _any_ bit was set instead of if
_all_ bits were set. This was a point of confusion.
Bug: angleproject:42266936
Change-Id: I76211a423f304fb4641ceb9cbfbb0bea4ff33ccf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5937411
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
83ca89e5
|
2024-08-08T19:53:32
|
|
CL: Update logic for default platform on context creation
In ANGLE, when multiple backends are enabled
(e.g. passthrough, Vulkan, etc.), each backend is its own platform.
Existing validation code was failing in this case for clCreateContext
in the event of user not manually specifying CL_CONTEXT_PLATFORM.
Spec says implementation then decides which platform to be associated
with that context.
ANGLE has a Platform::GetDefault() routine that was used and it simply
grabs the 1st platform from our platform list in ANGLE
(passthrough mode platform object in this case).
We erroneously fail the validation in the case where we pass Vulkan
device in our device_list since default-platform != Vulkan-platform.
Updating the logic to use device's platform (from list) as default case.
For clCreateContextFromType, we can continue to use
Platform::GetDefault() as this routine generates the appropriate device
list for the user to query/get via clGetContextInfo.
Bug: angleproject:42266872
Change-Id: I285459688309d1cc76ade5a8564164a5538e1eda
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5789652
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5967afe7
|
2024-04-02T17:45:48
|
|
CL: Update Platform ctor to handle rx errors
Bug: angleproject:359294584
Change-Id: I7aad107e57ea6f29b8fc69205ba72c27de6a9428
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5421576
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
|
|
3c08d696
|
2024-02-22T11:20:08
|
|
CL: Add DEVICE_NOT_FOUND case for context creation
In the case where devices are not found, context creation should fail
with CL_DEVICE_NOT_AVAILABLE error code. Adding that case.
Bug: angleproject:8581
Change-Id: If52b40b85d110a3e490bcc4a0a95e7910941356d
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5345829
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0ed0de4f
|
2024-01-18T10:47:50
|
|
OpenCL/Vulkan: Add initial program build support
Introducing both clspv compiler lib integration,
and clBuildProgram support.
Internally we also add buildInternal() routine
to abstract compile, link, and build phases.
Output SPIR-V is also parsed internally via
parseReflection() so that we can extract
needed reflection information for CL runtime.
Bug: angleproject:8549
Change-Id: If0563f4bea7ed0e04a13ea7a46c125c811d9c2a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5303564
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ed7c31c7
|
2023-11-29T18:31:43
|
|
OpenCL: Replace error-passing APIs to use angle::Result
Part 2 of Issue 8435:
This part replaces existing error handling for all CL APIs that
return CL objects to now use "angle::Result".
Bug: angleproject:8435
Change-Id: I75e41c7cbb06220cabec7cc9f9cb5107a3b6bd6d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5075773
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a9512a9f
|
2023-11-29T14:56:29
|
|
OpenCL: Replace error-return APIs to use angle::Result
The motivation of converting existing CL APIs using
"cl_int errorCode" to now use "angle::Result" is for better
interop with internal ANGLE plumbing/abstractions.
To facilitate this, we now make use of a TLS errorCode
object that we set internally and read from entrypoint/stubs
layer so that we can propagate back to user.
Bug: angleproject:8435
Change-Id: I7c2a786019c33c56649be4b6e8b61bc318497bb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5075772
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
44a5c913
|
2021-06-17T09:29:29
|
|
CL: Make CL front end and back end thread-safe
Add locking to all mutable variables of the CL objects in the
front end and pass-through back end to make them thread-safe.
This fixes a crash in a multi-threaded CTS test.
Bug: angleproject:6015
Change-Id: I1d6471c851217639411c434c82acd32d14035291
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2967468
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
69562546
|
2021-06-11T19:12:11
|
|
CL: Refactor info structs and fix conformance bug
- Remove variable name prefix from Info structs to be more consistent
with other ANGLE structs.
- Fix CL object validation check with magics, since the Mesa solution
doesn't work without RTTI.
- Add support for some extensions required by OpenCL 1.1 and for some
optional extensions.
- Fix more conformance bugs.
Bug: angleproject:6015
Change-Id: I41b1c45d95059a9994f5dc78bf9b74476cc6f2d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2956349
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2c8d9a9a
|
2021-06-09T16:09:35
|
|
CL: Remaining functions for OpenCL 1.2
Add support for the remaining functions for OpenCL 1.2 for the
front end and pass-through back end.
Also fix several bugs discovered by the conformance tests.
Bug: angleproject:6015
Change-Id: I1dca1c3f4c1d9aea7f0501094c171116ea01381f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2954259
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
82654e5d
|
2021-06-06T15:46:53
|
|
CL: Add program build commands
Add program build commands to front end and pass-through back end.
Bug: angleproject:6015
Change-Id: I1175646d35ff050796b718d7f0e269520292b319
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2940839
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
daf18594
|
2021-05-31T12:04:42
|
|
CL: Refactor front end entry functions
Move all front end functions that are only called from the OpenCL
entry points to a separate section at the top of the front end
object class bodies, which improves readability.
Bug: angleproject:6001
Change-Id: Id360adbf0c439e4068c379aa4ea1da25e99f7b53
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2928419
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
baca10b7
|
2021-05-29T16:26:57
|
|
CL: Remove object cache and fix multi-threading
All CL front end objects used to be cached to be able to determine
if an object has been created by the front end to check its validity.
The validity is now checked with the existence of an intrinsic value
(the dispatch table pointer), which is consistent with the patterns
found in Mesa and clvk (though clvk uses a magic value).
This allows the removal of all cached objects.
The cached objects were stored with std::unique_ptr. These are now
gone and all remaining pointers are now custom intrinsic reference
count pointers.
Also remove global lock which causes deadlocks, e.g. when CL API
is called from a separate thread to unlock a blocking call with
a user event. Most of the front end is constant and already
thread-safe. The ref count is also thread-safe now (atomic).
A few remaining locks will follow.
Without the global lock it was now possible to make the API
reentrant, and to remove the workaround with the Khronos ICD
loader to skip ANGLE's OpenCL library.
Bug: angleproject:6001
Change-Id: I7d3b52db9011a02cb7ea9ebdeb6e22c4c702ef5b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2927395
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
076974a9
|
2021-05-28T11:44:54
|
|
CL: event creation for front end & passthrough
Add event object to back end and implement creation and info query.
Bug: angleproject:6001
Change-Id: Id4951b726b66afa289fafe1a716a7cfdb6f5826d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2925477
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
9459456b
|
2021-05-27T13:43:41
|
|
CL: kernel creation for front end & passthrough
Add kernel object to back end and implement creation and info query.
Bug: angleproject:6001
Change-Id: I6e3fdd2b35d7e73ed56144dc938bf21436d3559f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2922150
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
51ab3dc3
|
2021-05-25T16:54:11
|
|
CL: Improve validation readablity
Improve validation readablity by introducing a bit field class
and by changing how the CL error code is returned.
Bug: angleproject:6001
Change-Id: I51deb745454e5281de725481edef85eb30be28c7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2919690
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
a6210a8f
|
2021-05-23T19:02:46
|
|
CL: image object creation for front end and pass-through
Add image object to front end and implement creation and info query.
Cache more Device info for Image validation.
Bug: angleproject:5956
Change-Id: I38374f4c2c85287109c464ac90eb1bf49b07fa0a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2912805
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
efd8da4d
|
2021-05-21T15:39:11
|
|
CL: buffer object creation for front end and pass-through
Add Buffer object to front end and Memory object to back end.
Implement creation of buffer and sub-buffer objects.
Make cl::Object destructor virtual to support destruction of Buffer.
Cache more Device info for Buffer validation. Add missing and move
existing version checks into validation.
Bug: angleproject:5956
Change-Id: Iea7665be5f6bdd8469e81f5fe4935a9fb0e03436
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2912677
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
10a8182c
|
2021-05-19T21:00:05
|
|
CL: Fix querying default device if non exists
Bug: angleproject:5992
Change-Id: Ie43f905fbb9cf41b0f6f88b2db27ebe9de9c37e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2906993
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
6622d2b4
|
2021-05-18T21:26:39
|
|
CL: command queues for front end and pass-through
Bug: angleproject:5956
Change-Id: I6d9d4e4e7dfc5402408e3b002e66e4eae752967d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2903091
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
c2fd3388
|
2021-05-15T22:28:27
|
|
CL: Add front end object references to back end objects
Add front end object references to back end objects, which requires
a significant amount of refactoring, because the back end objects
have to be constructed during the construction of the front end
objects, so that the references can be passed to the back end objects,
which then can be passed to the front end member initialization.
That would have been easier with inheritance than with PImpl.
Bug: angleproject:5904
Change-Id: Ib58e6a698e76987bdd63cd8088f923424d6c622b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2897249
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
a7ae63e4
|
2021-05-14T21:55:52
|
|
CL: Move object cast from entry points to stubs and front end
Move the OpenCl object cast from the generated entry points to the
stubs and front end, to make it possible to properly use static_cast.
This removes the limitation that the front end objects have to be
standard layout (and makes it possible to use virtual functions),
which is consistent with other front end objects.
Move the back end initialization from the stubs to the entry point
functions, which fixes a bug where the back ends were not initialized
during validation.
Move more code from the stubs to the front end, to keep the stubs
light.
Remove unused function `default_return_value` from
`generate_entry_points.py`.
Bug: angleproject:5904
Change-Id: Id999ad6c537888017bf3252c6f6e088b7d4c7984
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2897245
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
48b835cf
|
2021-05-09T22:47:00
|
|
CL: Implement context for front end and passthrough
Bug: angleproject:5904
Change-Id: I23b764bba87be3a51a1b5b44b13968fc572efde9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2883773
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
b300dc52
|
2021-05-09T00:35:24
|
|
CL: device partitioning for front end and passthrough
Partitioning is the creation of sub-devices. Also add reference
counting for CL objects, which is needed now for sub-devices.
Also fix CL print format strings, since cl_ulong is actually
always 64 bit and not unsigned long.
Bug: angleproject:5904
Change-Id: I006699fad2f953ce312bca87c9b6362b5d77a18a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2880665
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
93aff937
|
2021-05-08T16:46:22
|
|
Refactor CL platform object
Move GetPlatformInfo implementation from stubs to cl::Platform,
because stubs are meant to be small.
Also move CLPlatformImpl::Info instance to cl::Platform as it is
more efficient to be accessed from there, and more consistent with
cl::Device.
Bug: angleproject:5904
Change-Id: I4c0ba6390467d6ef357e38a5ef08f54b0a88d423
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2880663
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
e369a282
|
2021-05-08T14:08:28
|
|
Implement CL device object for front end and passthrough
Bug: angleproject:5904
Change-Id: I17f6d10ed59c62fe9126d29b7de2c127c5d0039a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2880662
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: John Plate <jplate@google.com>
|
|
dfe208f1
|
2021-04-28T18:26:00
|
|
Add loader for CL pass-through back end
Bug: angleproject:5904
Change-Id: If4960f3150f6bbc85a30f0f6ac5c9e668e6ff756
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2864022
Commit-Queue: John Plate <jplate@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
05fb2272
|
2021-04-27T19:31:31
|
|
Add support for OpenCL ICD Loader
Bug: angleproject:5908
Change-Id: Idafc0d15b69f9a21f2ab5e48c4c34f0dc0e0ee96
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2854598
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|
|
e25f3b10
|
2021-04-21T21:43:46
|
|
Generate empty CL object classes
Bug: angleproject:5886
Change-Id: I01566f40e85bd7f5531536fdc1df42965622a939
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2844969
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: John Plate <jplate@google.com>
|