src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp


Log

Author Commit Date CI Message
Gowtham Tammana 267a3daf 2024-11-05T19:51:58 CL/Vulkan: Use enums for cmd exec status instead of bools Setup the `createEvent()` interface to take the initial state of the event using an enum, instead of boolean for better readability. Bug: angleproject:377997556 Change-Id: Ib5a23cf2034e61e90b345bb432af59d96338b707 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6004063 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand f198e807 2024-10-16T17:47:17 CL/VK: Serialize cmds when queue profiling enabled When queue profiling is enabled by user (opt-in) we should serialize/finish each cmd. Bug: angleproject:377942756 Change-Id: I7809df073c0a6de0e4d5338bec2fa2032ebc1577 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6003807 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand a4172290 2024-10-08T13:20:40 CL/VK: Initial impl for migrateMemObjects Defer migration handling in multi-device setups. Allow API to return error-free on 1 device cases (nop) for now. Bug: angleproject:377942759 Change-Id: I9bcc238ad4d2965e1281a99ec2782e8cfe6c05a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6003805 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand de287909 2024-08-30T18:38:40 CL/VK: Generalize host transfer sync utility Rework host transfer sync utility to handle multiple non-blocking enqueue transfer ops for buffer/image reads. Bug: angleproject:377545840 Change-Id: Ic382162ded15cb15c900baf724e02592bfd846c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6001611 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Gowtham Tammana 644b91f7 2024-02-29T16:37:37 CL/Vulkan: Implement buffer map/unmap Implement the buffer map, for now mapping is performed at the call site. Bug: angleproject:42267077 Change-Id: I16929920be8a49863de514b541ff0a57b6ac4453 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5971713 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 6df20e5f 2024-08-21T13:29:36 CL/VK: Add missing HostPtr-BufferVk sync on unmap Missing extra copy/sync for enqueueUnmapMemObject routine for USE_HOST_PTR scenario. Bug: angleproject:377366930 Change-Id: Ifcb0ed58beabf5870e00ed47b36cfd08767eba70 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5990104 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gowtham Tammana 2f8ad9c1 2024-09-26T20:34:34 CL/Vulkan: Add support for sub-buffer creation Sub-buffer is setup to point to offset location of the parent buffer. The copy buffer interface is updated to account for copies from the same sub-buffer. Bug: angleproject:372157566 Change-Id: I668c7182a8c4c12e265115f1c28d9bfbfe562bb0 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916156 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Rafay Khurram 3c1e98a3 2024-05-22T01:46:52 CL/Vulkan: Fix clEnqueueMapImage/clEnqueueUnmapMemObject * Updates slice_pitch and row_pitch parameters with relevant values according to the spec. * For mapping, image is copied to staging buffer, then copied to dynamically allocated array * For unmapping, the reverse is done with the array being freed Tests-Passing: OCLCTS.test_cl_copy_images 2D, test_cl_copy_images small_images 2D, test_cl_copy_images max_images 2D, test_cl_copy_images 3D, test_cl_copy_images small_images 3D, test_cl_copy_images max_images 3D, Bug: angleproject:42266936 Change-Id: I0cd778244832ce66e72a58a228ed889a9002171e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5961948 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Rafay Khurram <r.khurram@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gowtham Tammana 79b6c7ab 2023-10-09T13:29:07 CL/Vulkan: Add fillWithPattern interface In CL, the buffer can be requested to filled with a pattern. Adding a pattern fill helper routine that fills up the buffer from CPU side. Bug: angleproject:42267074 Change-Id: I144e9b7c6f4d1263f21cabc2491c46e8951e604f Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916157 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Rafay Khurram c0a28403 2024-05-06T12:42:28 CL/Vulkan: Enable clEnqueueNDRangeKernel for Images and Samplers * Performs clspv reflection for ArgumentSampler, ArgumentStorageImage, and ArgumentSampledImage * Creates descriptor sets for performing enqueue Tests-Passing: OCLCTS.test_basic readimage, readimage_fp32, readimage_int16, writeimage, writeimage_fp32, writeimage_int16, mri_one, mri_multiple, imagenpot Bug: angleproject:42266936 Change-Id: I2b6c631e76556870c4342d2046c267ff5cf5105d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5955597 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Rafay Khurram 7c99c225 2024-04-03T01:48:57 CL/Vulkan: Implement clEnqueue APIs involving images Review enables the functionality of: - clEnqueueReadImage - clEnqueueWriteImage - clEnqueueCopyImage - clEnqueueMapImage - clEnqueueCopyImageToBuffer - clEnqueueCopyBufferToImage Tests-Passing: OCLCTS.test_basic imagecopy, imagerandomcopy, OCLCTS.test_profiling copy_array_to_image Bug: angleproject:42266936 Change-Id: Ifd4ccd0a9e16bac11dbff74d4634d9ca4c5b4284 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5796530 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Rafay Khurram <r.khurram@samsung.com>
Gowtham Tammana d9f8fba8 2024-09-27T15:56:36 CL/Vulkan: Fix event queue serials Some of the events are finished at call site, dont set queue serials for them. Bug: angleproject:372157567 Change-Id: I4e0d568b76959be96bc7565bae7cdb5d4549619a Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916155 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 5b4609de 2024-10-07T14:40:49 CL/Vulkan: Adjust the pushConstant size/offset to multple of 4 The spec[1] requires the push constants size/offset to be multiple of 4. Adjust them as needed. [1]: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdPushConstants.html#_description Bug: angleproject:372157565 Change-Id: I8ea788dbd68e3aea262e12af56e40ac84087ceef Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916154 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Charlie Lao dd54eeec 2024-10-11T13:26:46 Reland "Vulkan: Track GPU progress for individual DescriptorSet" This is a reland of commit 292102944add2ab30f4aa12a971cac456cc7726b with the fix of garbage being added back to garbage list. Original change's description: > Vulkan: Track GPU progress for individual DescriptorSet > > Right now ProgramExecutableVk keeps VkDescriptorSet object, and > DescriptorSetHelper is created when a cache entry becomes invalid. > Further, DescriptorSetCache keeps the cache of {VkDescriptorSet, > RefCountedDescriptorPoolHelper} pair. So we are having three different > type of objects at different stages of life: VkDescriptorSet, > DescriptorSetHelper, and {VkDescriptorSet, > RefCountedDescriptorPoolHelper. This CL makes DescriptorSetHelper at > creation and at cache and at garbage. With this change, you have a > reference counted DescriptorSetHelper object (i.e, DescriptorSetPointer) > during entire life cycle and is passed around between cache and program > as is. This CL is preparation for the future CL where we may disable > cache for descriptorSet. The descriptorSet will be added to garbage list > and reused constantly without go through the cache code. We need to > track the individual descriptorSet with ResourceUse so that it won't > reuse until GPU is finished. This CL is making DescriptorSetHelper a GPU > tracking object so that it will still just work when cache is disabled. > > Bug: angleproject:372268711 > Change-Id: I1cfb77cc5069b202d870388fd8809e265cdca90b > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5918586 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Charlie Lao <cclao@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> Bug: angleproject:372268711 Change-Id: Ic920f99cc78cde1e94690bdbee3b885844fa155b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5954701 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
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>
Charlie Lao 45cc47af 2024-10-22T21:41:22 Revert "Vulkan: Track GPU progress for individual DescriptorSet" This reverts commit 292102944add2ab30f4aa12a971cac456cc7726b. Reason for revert: Causing bot failure in later CLs Original change's description: > Vulkan: Track GPU progress for individual DescriptorSet > > Right now ProgramExecutableVk keeps VkDescriptorSet object, and > DescriptorSetHelper is created when a cache entry becomes invalid. > Further, DescriptorSetCache keeps the cache of {VkDescriptorSet, > RefCountedDescriptorPoolHelper} pair. So we are having three different > type of objects at different stages of life: VkDescriptorSet, > DescriptorSetHelper, and {VkDescriptorSet, > RefCountedDescriptorPoolHelper. This CL makes DescriptorSetHelper at > creation and at cache and at garbage. With this change, you have a > reference counted DescriptorSetHelper object (i.e, DescriptorSetPointer) > during entire life cycle and is passed around between cache and program > as is. This CL is preparation for the future CL where we may disable > cache for descriptorSet. The descriptorSet will be added to garbage list > and reused constantly without go through the cache code. We need to > track the individual descriptorSet with ResourceUse so that it won't > reuse until GPU is finished. This CL is making DescriptorSetHelper a GPU > tracking object so that it will still just work when cache is disabled. > > Bug: angleproject:372268711 > Change-Id: I1cfb77cc5069b202d870388fd8809e265cdca90b > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5918586 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Charlie Lao <cclao@google.com> > Reviewed-by: Yuxin Hu <yuxinhu@google.com> Bug: angleproject:372268711 Change-Id: I4d3c34058d100112a098144276b52c0faf8d593a No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5955529 Auto-Submit: Charlie Lao <cclao@google.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Rafay Khurram 99ba07d3 2024-03-26T00:58:57 CL/Vulkan: Implement createImage Enabling functionality of: - clCreateImage Tests-Passing: OCLCTS.test_api get_image<1d|2d|3d>_info Bug: angleproject:42266936 Signed-off-by: Rafay Khurram <r.khurram@samsung.com> Change-Id: I0281f092bff13cdd81b87d596fdd15b33dda7e46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5796527 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Charlie Lao 29210294 2024-10-11T13:26:46 Vulkan: Track GPU progress for individual DescriptorSet Right now ProgramExecutableVk keeps VkDescriptorSet object, and DescriptorSetHelper is created when a cache entry becomes invalid. Further, DescriptorSetCache keeps the cache of {VkDescriptorSet, RefCountedDescriptorPoolHelper} pair. So we are having three different type of objects at different stages of life: VkDescriptorSet, DescriptorSetHelper, and {VkDescriptorSet, RefCountedDescriptorPoolHelper. This CL makes DescriptorSetHelper at creation and at cache and at garbage. With this change, you have a reference counted DescriptorSetHelper object (i.e, DescriptorSetPointer) during entire life cycle and is passed around between cache and program as is. This CL is preparation for the future CL where we may disable cache for descriptorSet. The descriptorSet will be added to garbage list and reused constantly without go through the cache code. We need to track the individual descriptorSet with ResourceUse so that it won't reuse until GPU is finished. This CL is making DescriptorSetHelper a GPU tracking object so that it will still just work when cache is disabled. Bug: angleproject:372268711 Change-Id: I1cfb77cc5069b202d870388fd8809e265cdca90b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5918586 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Charlie Lao c52e8493 2024-10-11T14:21:19 Vulkan: Switch DescriptorPoolPointer to use SharedPtr To make the reference counting easier to maintain, SharedPtr class is added to automatically tracking the reference counting and object creation/destruction. Right now we have BindingPointer class doing similar things except it does not automatically manage the object create/destroy, which makes it less robust as well as redundant code to manage object life cycle. The other problem with BindingPointer is that it does not work with normal assign/copy operator which made it hard to read and use. SharedPtr uses exact same API semantics as std::shared_ptr, which makes the reference counting very easy to use. The main difference of SharedPtr and std::shared_ptr is that it does not use any atomic or lock since it assumes user only uses it under thread safe environment, which ANGLE's backend is. This CL also changes mDescriptorPools to mDynamicDescriptorPools to make it clear that it is dynamic descriptor pool not the descriptor pool. This is also preparation CL for the next CL where we will use SharedPtr to manage DescriptorSetHelper life cycle, which otherwise a bit complicated to manually manage. Bug: angleproject:372268711 Change-Id: I1033d9bf259bbc075a9b374d8a28e1f67d889873 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5926183 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 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>
Gowtham Tammana f9709279 2024-09-20T16:02:56 CL/Vulkan: Add support for printf builtin processing The support for printf builtin in clspv enabled through the SPIR-V non-semantic clspv reflection instructions - PrintfInfo and PrintfBufferStorageBuffer [1]. The printf buffer is setup with a separate descriptor layout and the pipeline layout is updated accordingly. Also, printf is enabled as default option now for clspv. [1]: https://github.com/KhronosGroup/SPIRV-Registry/blob/master/nonsemantic/NonSemantic.ClspvReflection.html Bug: angleproject:369724757 Change-Id: I20b245eb0fea69941bd1aeb42534f8b729ec17e8 Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893958 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Gowtham Tammana 0a452697 2024-09-19T16:33:26 CL/Vulkan: Enable support for multiple descriptor set handling The clspv transcompiler can generate multiple descriptor sets depending on the kernel e.g. printf storage buffer is setup in a separate descriptor set, and kernel arguments in a separate descriptor set. This change enables setting up of multiple descriptor sets and appropriately bind them. Also, creation of descriptor set and pipeline layout are deferred to kernel enqueue time as it is quite possible that kernels are built in a batch before their use. Bug: angleproject:369724757 Change-Id: I80eb93f4a3b8afc7461c299cc283526cc4b872fa Signed-off-by: Gowtham Tammana <g.tammana@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893955 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 1bed7fdd 2024-09-13T15:29:07 CL/VK: Fix missed PushConstantRegionGroupOffset Adding missing reflection instruction to parser: NonSemanticClspvReflectionPushConstantRegionGroupOffset And add related PC routine during NDRangeKernel. Bug: angleproject:366412385 Change-Id: I2ffa48dee46a23840390312f20e7103f68daa0c5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5860310 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand cce1497c 2024-06-07T15:03:07 CL/Vulkan: regionOffset as GWO for uniform clspv states: region_offset: the sum of the global ID offset into the NDRange for this uniform region and the global offset of the NDRange Since we currently do not support non-uniform at the moment, we just treat the PushConstantRegionOffset as the global work offset. Bug: angleproject:366412385 Change-Id: Ifd9953f21cd7826198b2cfe7d30ddec68ea2c7a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5860309 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 741e5355 2024-06-07T16:39:53 CL/Vulkan: Add missing PushConstantNumWorkgroups Adding support for: NonSemanticClspvReflectionPushConstantNumWorkgroups Bug: angleproject:366412385 Change-Id: Id4cfc1ee456d3a7f6d058f3f4a6a580381b2d471 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5860308 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 72d01332 2024-05-23T16:34:14 CL/Vulkan: Add missing EnqueuedLocalSize PushConst Additionally, we move down "processKernelResources" after "getOrCreateComputePipeline" since new push constant needs LWS value and we might modify ndrange's LWS after "getOrCreateComputePipeline". Bug: angleproject:366412385 Change-Id: Ia287d667e0616256d1f9c039566b79aae1337154 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5860306 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand 2b723c13 2024-02-02T14:12:06 CL/VK: Add initial enqueueCopyBuffer Generalizing the copy buffer with appropriate barrier inserts and commandbuffer command. Bug: angleproject:42267074 Change-Id: I02fd36a221ea70f007aee78ceeef84c24fa85682 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5410935 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 5b4517ec 2024-02-02T14:04:29 CL/VK: Add helper for inserting barriers Adding a helper function to insert execution and memory barriers when resource access commands are recorded into the command buffer in CLCommandQueueVk. An example of a copy buffer command with src and dst ``` set access.readBuffer <- src set access.writeBuffer <- dst insert barriers - onResourceAccess(access) add copy command - commandBuffer->copyBuffer() ``` Bug: angleproject:42267073 Change-Id: I61d8064fd015a4bf3dab018cbb83d147915ed627 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5409249 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand 98b06696 2024-06-17T17:28:56 CL/Vulkan: Add initial profiling support This PR introduces initial cl_event profiling support. For now, use CPU timestamps (later look into Vulkan GPU device timestamps). Bug: angleproject:357902512 Change-Id: I2197e396e222d2842ab31304f91934f9e000ea0d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5767598 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand cc50c75b 2024-04-19T16:40:26 CL/Vulkan: Fix missing kernel enqueue retain/release According to spec: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#clReleaseKernel We also need to implicitly retain/release the Kernel object on Kernel enqueue APIs along with other kernel resource retain/release(s) (i.e. memobjs). Bug: angleproject:356328473 Change-Id: Ie6ca228ebece2988d511d9ffd2a617abdc057d0a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5753766 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
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>
Charlie Lao b22cce5f 2024-05-21T10:55:27 Vulkan: Remove Renderer::getDeviceQueueIndex Renderer::getDeviceQueueIndex() returns queueFamilyIndex. There is a function that already returns mCurrentQueueFamilyIndex, so this function is now removed. This CL also renames ImageHelper::isQueueChangeNeccesary to isQueueFamilyChangeNeccesary Bug: b/337135577 Change-Id: I3cd9ded1414d1389e162aaa5399c231a987f871e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5553067 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand c62c0c25 2024-01-24T17:29:45 CL/VK: Implement initial enqueueRead/WriteBuffer Bug: angleproject:8638 Change-Id: I1d5b3b15fab24ce35c243a3eb27bcac2104d7f5d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5409250 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand 6cfb5931 2024-03-13T12:31:40 CL/VK: Implement marker and barrier cmds Adding in last remaining marker and barrier cmds: clEnqueueMarker clEnqueueBarrier clEnqueueMarkerWithWaitList clEnqueueBarrierWithWaitList Bug: angleproject:8634 Change-Id: I67e03e379c3f9e40a31bcba34ea85e2739cc97b5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406617 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand 04329fe0 2024-01-24T12:51:05 CL/VK: Implement wait APIs This commit implements: clWaitForEvents clEnqueueWaitForEvents Bug: angleproject:8633 Change-Id: I873310ab11dfac08c165dc36be2400a35be48878 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406616 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand cc770518 2024-03-28T18:05:00 CL/VK: Implement flush & finish Bug: angleproject:8632 Change-Id: I139e463c0b1c947cee68e65c40503e52f01e988b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406615 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Annestrand d4abe622 2024-04-03T17:46:38 CL/VK: Implement enqueue NDRangeKernel & Task Adding support for: clEnqueueNDRangeKernel clEnqueueTask Bug: angleproject:8631 Change-Id: If57002be3ea00a55215e89ca47ab8fe9a422c6e7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5406614 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
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>
Shahbaz Youssefi 914fe61b 2024-03-15T13:20:49 Vulkan: Rename RendererVk.* to vk_renderer.* Done in a separate CL from the move to namespace vk to avoid possible rebase-time confusion with the file name change. Bug: angleproject:8564 Change-Id: Ibab79029834b88514d4466a7a4c076b1352bc450 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5370107 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Austin Annestrand 9fee9156 2024-01-18T13:50:38 OpenCL/Vulkan: Add initial CL Kernel routines Enables the following OpenCL APIs for Vulkan Backend: clCreateKernel clCreateKernels clSetKernelArg Bug: angleproject:8572 Change-Id: Iaaabd295d7951a48bf9bd6717ed3957960052dbd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5341376 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand 19e21b1e 2024-01-11T14:38:49 OpenCL/Vulkan: Add initial support for cmdQueue Introduce OpenCL command queue object creation for Vulkan backend in ANGLE. Bug: angleproject:8500 Change-Id: I08a63e91aa0ee75dd2be00c770f521c43a3f83b3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5233367 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Austin Annestrand f8c06f10 2023-11-30T17:45:35 OpenCL: Add types to cl_mem origin and region Now using cl::MemOffset and cl::Coordinate. Bug: angleproject:8439 Change-Id: Id775fe78467d3b56d2a7cc87f793221ab5e04bc5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5078244 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Austin Annestrand 66d29149 2023-10-16T12:43:43 OpenCL: Add scaffolding to renderer/vulkan code Start off ANCLE (OpenCL on ANGLE) with backend scaffolding code with placeholder API error returns until they are later implemented. Bug: angleproject:8377 Change-Id: I223d3482cce097ccb298e121fc03ec416e8958fd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4950556 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
John Plate 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>