Skip to content

Conversation

kpet
Copy link
Contributor

@kpet kpet commented Nov 28, 2023

Draft specification: #1019

Change-Id: Id096c7ab542d6fe04a5f7ae7cdbd031755ca15c8

Change-Id: Id096c7ab542d6fe04a5f7ae7cdbd031755ca15c8
@bashbaug bashbaug merged commit 0420b1c into KhronosGroup:main Nov 29, 2023
aharon-abramson pushed a commit to aharon-abramson/OpenCL-Docs that referenced this pull request Feb 27, 2025
Change-Id: Id096c7ab542d6fe04a5f7ae7cdbd031755ca15c8
bashbaug added a commit that referenced this pull request Sep 9, 2025
* Update cl_khr_command_buffer_mutable_dispatch.asciidoc

Add type cl_mutable_dispatch_promises_khr and its possible values

* Update cl_khr_command_buffer_mutable_dispatch.asciidoc

* Update ext/cl_khr_command_buffer_mutable_dispatch.asciidoc

Co-authored-by: Ewan Crawford <[email protected]>

* changes to cl.xml

* update extension's version

* rename "promise" to "assert"

* Update xml/cl.xml

Co-authored-by: Ewan Crawford <[email protected]>

* Update xml/cl.xml

Co-authored-by: Sun Serega <[email protected]>

* Update xml/cl.xml

Co-authored-by: Sun Serega <[email protected]>

* remove changes to files made by mistake

* rename more occurances of "promise" to "assert"

* Update cl_khr_command_buffer_mutable_dispatch.asciidoc

* Update cl_khr_command_buffer_mutable_dispatch.asciidoc

replace error with undefined behavior

* add CL_COMMAND_BUFFER_MUTABLE_DISPATCH_ASSERTS_KHR

* fixing mix-up in enum values

* return errors in non-update APIs

* spaces

Co-authored-by: Sun Serega <[email protected]>

* Update ext/cl_khr_command_buffer_mutable_dispatch.asciidoc

Co-authored-by: Ewan Crawford <[email protected]>

* update the formula for number of WGs

* Update xml/cl.xml

Co-authored-by: Sun Serega <[email protected]>

* Remove minor TODO comment (#957) (#988)

Delete obsolete comment in cl_khr_semaphore.  Issue

* Use hexapdf instead of ghostscript for PDF optimization (#991)

* Use hexapdf instead of ghostscript for PDF optimization

Resulting PDFs tend to be considerably smaller, and also runs about 15%
faster when doing a full PDF build (2:39 vs. 3:06 on my machine).

The hexapdf tool does need to be installed in the build environment - it
is in the khronosgroup/docker-images:asciidoctor-spec Docker image.

* Add hexapdf to Travis environment.

* cl_khr_semaphore: Enforce one device semaphores (#973) (#996)

* cl_khr_semaphore: Enforce one device semaphores (#973)

Only permit semaphores to be associated with a single device.  Add an error code for invalid use.

* Changes wording according to review comments

* Change error code to CL_INVALID_PROPERTY if a context is multi-device, and no device is specified.

* move the layers spec to the extensions directory (#999)

Since the layers spec is not published in the OpenCL extension spec
and is instead published on the OpenCL registry similar to EXT and
vendor extensions, it makes more sense to put it in the extensions
directory.

* cl_semaphore_khr: Query if semaphore is exportable (#997)

* cl_semaphore_khr: Query if semaphore is exportable

Add query to clGetSemaphoreInfoKHR that returns CL_TRUE if a semaphore is exportable.

* Change extension version to 0.9.1

* Add missing brackets around return types.

* remove TODO comment in semaphore spec (#1012)

The default behavior when the device handle list is not specified
is now properly described, so the TODO comment can be removed.

* document USM error conditions for clSetKernelExecInfo (#974)

* add description metadata (#1000)

* consistently put newer versions at the bottom of version history tables (#1010)

* Reserve enum for cl_ext_yuv_images (#1022)

Change-Id: I942c3ce47284e7aea93edc02cf0f327af95e4ed9

* allow clSetCommandQueueProperty to return an error for non-OpenCL 1.0 devices (#980)

This follows the same pattern and text used by clSetProgramReleaseCallback,
which may return an error for non-OpenCL 2.2 devices.

* clarify the free function for clEnqueueSVMFree must be thread-safe (#1016)

* use title case for more chapter headings (#1011)

* clarify async copies and wait group events must be convergent (#1015)

* add old command queue APIs to the reference page table of contents (#985)

* Reserve enums for cl_ext_image_drm_format_modifier (#1020)

Change-Id: Id096c7ab542d6fe04a5f7ae7cdbd031755ca15c8

* fix version note links in the reference pages (#982)

* fix version note links in the reference pages

* add config files with and without links

* fix comment as per review

Co-authored-by: Alastair Murray <[email protected]>

---------

Co-authored-by: Alastair Murray <[email protected]>

* cl_khr_external_semaphore_khr: semaphore re-import (#939)

* cl_khr_external_semaphore_khr

Add clImportSemaphoreSyncFD API call.  Sync fd semaphores
must re-import the sync_fd after every wait.  Add an API
call to make this re-import possible, without creating
a new OpenCL semaphores.  See issue #888.

* Revised to be general

* Removed sync_fd reference

* Cleaned up re-import mechanism

* Move re-import back to sync_fd extension

* Moved version to 0.9.1

* Bump version to 0.9.2 and re-name import to re-import

---------

Co-authored-by: Joshua Kelly <[email protected]>

* update the provisional extension notification text (#1002)

* refactor the provisional notice into a separate file

* correct and update the provisional notice text

* add links to change log PRs (#1017)

* include dictionaries before footnotes for reference pages (#1018)

* remove unnecessary rounding mode text for geometric and common functions (#1027)

Without knowing how these functions are implemented any statements
about rounding modes or contractions are unnecessary and confusing.
We have defined error bounds for these functions, and as long as an
implementation meets these error bounds it should be considered
correct.

* clarify the user function for clEnqueueNativeKernel must be thread safe (#1026)

* fix the link appearance in the online reference pages (#987)

* fix the link appearance in the online reference pages

* revert a few unintended extension changes

* cl_img_mem_properties: Memory hint flags update (#1025)

* Update cl.xml

cl_img_mem_properties: Added hint mem alloc flags for CPU and GPU.

* Update cl.xml

* Update cl.xml

* Update cl.xml

Removing unused bitfield definition.

* Renaming enum CL_DEVICE_MEMORY_CAPABILITIES_IMG

* Update cl_img_mem_properties.asciidoc. Memory flag extensions and deviceInfo query extensions

Added extension to memory allocation flags and deviceInfo property to query device memory capabilities.

* Remove `cl_semaphore_import_properties_khr` (#1034)

* fix ptr (#1033)

* add the unbreakable attribute to generated source blocks (#1032)

* update the spec change log with changes from 3.0.14 (#1031)

* initial change log for changes to 3.0.14

* minor updates and wordsmithing

* update the spec source copyright dates to 2024 (#1035)

* add missing curly brace for asciidoctor attribute (#1038)

* Add CL_CANCELLED_IMG error code for cl_img_cancel_command extension. (#1042)

* Remove unnecessary RESERVED_IMG enums and add CL_CANCELLED_IMG error code for cl_img_cancel_commands

* Re-add RESERVED enum names, and change CL_CANCELLED_IMG enum value to -1126

* Upload cl_img_cancel_command asciidoc specification (#1046)

* Upload cl_img_cancel_command asciidoc specification

* Fix copyright message

* Fix unterminated table in IMG extension (#1051)

Change-Id: Ib3e14b09c052930da79c74b2e09654c89df93d45

Signed-off-by: Kevin Petit <[email protected]>

* clarify that 16-bit and 64-bit floats can be passed as kernel arguments (#1049)

* fixes derived formula for atanh (#1048)

Asciidoctor treats words surrounded by double parentheses as index
terms, so we need to escape the first parenthesis so the derived
formula for atanh is properly preserved.

* Remove redundant error condition in cl_khr_semaphore (#1052)

* Remove redundant error condition in cl_khr_semaphore

This case is already (better) covered by the conditions for
CL_INVALID_CONTEXT.

Signed-off-by: Kevin Petit <[email protected]>
Change-Id: Ibb22aaba04772042e84464487b3528305c0e2809

* remote stray or's

Change-Id: I78918127b4818236b4cdf3ed569d1dfef7eace8c

---------

Signed-off-by: Kevin Petit <[email protected]>

* Fix `cl_khr_command_buffer_mutable_dispatch` extension (#1059)

* fix

found at the end of https://github.com/KhronosGroup/OpenCL-Docs/pull/992

* Update xml/cl.xml

Co-authored-by: Ben Ashbaugh <[email protected]>

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* Add `cl_img_cancel_command` extension to XML (#1056)

* Add `cl_img_cancel_command` to XML

* also require the command

* add USM host mem alloc size issue (#1058)

* add USM host mem alloc size issue

* fix asciidoc list markup

* clarify conditions for CL_INVALID_PLATFORM (#1063)

Clarifies the conditions when clCreateContext and
clCreateContextFromType should return CL_INVALID_PLATFORM.

* fix a few notes in the spec for consistency (#1070)

* clarify clSetEventCallback behavior for command errors (#1071)

The callback registered for CL_COMPLETE will be called when the
command completes successfully or when the command is abnormally
terminated.  This behavior used to be documented in a footnote
but it is belongs in the main spec text instead.

* Fix markups of parameter names ``obj`` and ``value`` (#1054)

In other part of the document, parameter names are enclosed in
``_``, so these parameters also should be marked up the same way.

* fix a few more broken refpage links for CL_VERSION_X_Y macros (#1074)

* fix a few minor issues in the extensions spec (#1062)

* fix unterminated open block

* fix missing word in assume linear images enum

* tidy up mutable dispatch extension

Use consistent comment style in new enum description
Use asciidoctor attribute for mutable dispatch asserts type
Rearrange enums slightly to group by use

* move the description of the no additional work-groups error condition

This error condition is returned by clCommandNDRangeKernelKHR, not
clCreateCommandBufferKHR.

* add the numerical value of the image channel order and data type (#1050)

This may make it easier to extend these tables or enable additional
simplifications in the future.

* publish cl_intel_subgroup_local_block_io (#1028)

* Building individual extensions depends on generated files (#1076)

Fix an occasional parallel build failure.  I don't think this is a new issue,
just it rarely occurs and only on a clean build.

* Remove CRLF line endings from two core spec files (#1079)

All other text files in the repository use LF line endings.  The presence of
the carriage returns in the files means that on macOS the shell code that
automatically builds up the Makefile dependencies from the include lines in
Asciidoc was not working as xargs did not behave as intended.

Note that various Intel vendor extensions also use CRLF line endings but this
PR does not touch them, they do not contain includes so do not actually cause
any problems.

* Add framework for extensions in API spec (#950)

* Add framework for extensions in API spec and examples for
cl_khr_integer_dot_product and cl_khr_command_buffer.

* Add uncommitted file

* Complete adding cl_khr_integer_dot_product to API and C specs

* Add external memory extensions

* Bring cl_khr_command_buffer up to date with latest provisional updates

* Add cl_khr_semaphore.

* Add build script

* Working snapshots

api/draft/ -> working versions of extension specs
api/draft/Snapshot/ -> latest snapshotted versions of ext/

Initially, these were identical to the published extension specs.
This was followed by a lot of markup cleanup and reorganization, moving
sections around to separate spec changes from extension appendix /
descriptions, adding refpage block headers, cleaning up C function
tables, making table headings uniform, using Title Case consistently in
section headers, and marking all khr extensions Ratified.

* Update NOTES

* Use hexapdf instead of ghostscript for PDF optimization

Resulting PDFs tend to be considerably smaller, and also runs about 15%
faster when doing a full PDF build (2:39 vs. 3:06 on my machine).

The hexapdf tool does need to be installed in the build environment - it
is in the khronosgroup/docker-images:asciidoctor-spec Docker image.

* Roughly sync with Vulkan scripts, then add CL customizations.

Add a workaround for safely importing api.py, so that a missing api.py +
empty 'api/' directory don't cause exceptions.

Update XML schema to sync with Vulkan insofar as possible.

* Replace extension names with links to extension appendices

* Add framework for extension metadata includes in build and scripts.

Add depends / promotedto / supersededby / ratified attributes to XML
based on comments in extension specs and feedback from Ben, and start
converting extension appendices to use metadata includes.

Add missing OpenCL C extensions to cl.xml. This might impact downstream
header generation - to be checked.

Minor updates to metadocgenerator and conventions for OpenCL

* Split documents containing multiple extensions into separate files, and
split all extension documents into appendix and body (in draft/app/)
files. Move appendices into API spec directory, leaving the bodies to be
integrated in api/draft/.

* Script fixes for extension/version link markup, and add provisional tags to XML

* Remove workarea files not needed in this branch

* Change to SPDX ID

* Add cl_khr_external_semaphore* extension language

And use Title Case consistently throughout the spec

* Add cl_khr_subgroup* extensions, mostly to OpenCL C spec, and extension framework in the C spec

* Add cl_khr_{global,local}_int32_{base,extended}_atomics extensions

Really just improve language describing them, since all the functions
were already in the OpenCL C spec as part of OpenCL 1.1.

* Add cl_khr_fp64 extension language (virtually all of which was already present, but needed minor changes).

* Add most remaining khr extensions to the API and C language specs:

* cl_khr_async_work_group_copy_fence
* cl_khr_device_enqueue_local_arg_types
* cl_khr_device_uuid
* cl_khr_extended_async_copies
* cl_khr_extended_bit_ops
* cl_khr_extended_versioning
* cl_khr_gl_depth_images
* cl_khr_gl_event
* cl_khr_gl_msaa_sharing
* cl_khr_gl_sharing
* cl_khr_global_int32_base_atomics
* cl_khr_global_int32_extended_atomics
* cl_khr_icd
* cl_khr_il_program
* cl_khr_image2d_from_buffer
* cl_khr_initialize_memory
* cl_khr_int64_base_atomics
* cl_khr_int64_extended_atomics
* cl_khr_local_int32_base_atomics
* cl_khr_local_int32_extended_atomics
* cl_khr_mipmap_image
* cl_khr_mipmap_image_writes
* cl_khr_pci_bus_info
* cl_khr_priority_hints
* cl_khr_srgb_image_writes
* cl_khr_suggested_local_work_size
* cl_khr_terminate_context
* cl_khr_throttle_hints
* cl_khr_work_group_uniform_arithmetic

There are about a dozen remaining extensions, mostly DX / EGL sharing
related.

* Add extension language for

* cl_khr_create_command_queue
* cl_khr_d3d10_sharing
* cl_khr_d3d11_sharing
* cl_khr_dx9_media_sharing
* cl_khr_egl_event
* cl_khr_egl_image

* Fix SPDX typo

* Fix dependency generation

* Move asciidoc dependency generation into a separate shell script

Executing the updated version under Travis CI (but not locally) was
failing for no apparent reason.

* Add new python dependency

* Add extension language for

* cl_khr_command_buffer
* cl_khr_command_buffer_multi_device
* cl_khr_command_buffer_mutable_dispatch
* cl_khr_pci_bus_info
* cl_khr_select_fprounding_mode
* cl_khr_spir

Also some minor cleanup / consistency edits in related markup.

* Add cl_khr_fp16 and some missing cl_khr_depth_images extension language.

Some table and section heading markup / capitalization cleanup.

* Update api/appendix_e.asciidoc

Co-authored-by: Ewan Crawford <[email protected]>

* Update api/appendix_e.asciidoc

Co-authored-by: Ewan Crawford <[email protected]>

* Resolve https://github.com/KhronosGroup/OpenCL-Docs/pull/950#discussion_r1455084632

* Remove language in cl_khr_*_int32_*_atomics appendices saying that ''the volatile qualifier was added''

Closes #1013

* update

* Various minor fixes to the build process

Add 'makeSpec' script, replacing 'makeAll', and document it in
README.adoc.
Use `makeSpec -spec khr [make targets]` instead of `makeAll [make
targets\`

Remove static refpage source which is now extracted from the
specification source, including various KHR extension API refpages and
extension appendix refpages.

Minor fixes to refpage extraction scripts.

Remove version dependencies from `depends` attributes in cl.xml, which
are not yet supported in the schema or the scripts which consume this
attribute for `makeSpec`, and move them to `comment` attributes for the
time being.

* Minor script fixes. Try to build both core and khr targets in Travis CI.

* Attempt to install needed python package

* Bring extensions up to date with main at commit c66cb8209f0144fc2cf3819174433835730572eb

All extensions in the API and C specs should now be consistent with the ext/ directory.

* Cleanup and minor fixes / improvements

Add links from the API spec extension appendices to the corresponding
extension section of the C language spec.

Markup fixes for a few asciidoc conditional typos.

Add a few missing extension sections to the C language spec.

Modify makeAll script to interpret '-spec all' as '-spec khr', since
there are no extension appendices or other content for non-khr
extensions at present, and building with all extensions causes problems
in the document pipeline.

* Removing separate OpenCL Extensions from the repository (#1081)

Once we integrate all the khr extensions into the API and C specs, the
separate documents under ext/ will serve no purpose and will have the
risk of creating divergences between the sme content in the API / C
specs and the separate extension spec.

This removes the separate khr extension documents from the repo, and
strips down the OpenCL Extension spec to just point to the corresponding
extension appendix in the API spec. It will also serve as a forcing
function for all future extension development to be done against the API
/ C specs. Any outstanding PRs against these documents will have to be
rebased and the same edits reapplied to those specs, whether changes to
published extensions or in-flight, but as yet unpublished khr
extensions.

Ideally this would merge into #950 before that is merged to main, if the
WG can agree to that. It could also be retargeted to main instead, if
this decision will take longer than the timeframe for merging #950.

* Update XML to mark recently ratified extensions as non-provisional (#1084)

Net effect is to rearrange the extension appendices so these extensions
are no longer in a 'provisional' subsection, and to remove the generated
comments about their being provisional from the extension refpages.

---------

Co-authored-by: Ewan Crawford <[email protected]>

* Switch to GitHub Actions for CI (#1085)

* WIP First stab at Github Actions

* sudo

* remove travis config

* change travis builds to only build on tags

* sync GitHub actions with travis script

* configure dependabot github actions version updates

* update gem versions

* add libwebp-dev dependency for asciidoctor-mathematical

* minor updates

* update for the new spec toolchain

---------

Co-authored-by: Kévin Petit <[email protected]>

* Reference layered extensions in command-buffer intro (#1090)

The "Interaction With Other Extensions" introductory section
of `cl_khr_command_buffer` references future layered extensions
as part of the design rationale.

Two of these layered extensions currently exist, so we can
update this section to reference them directly as opposed to
the existing speculative language.

* fixes a few incorrect asciidoctor attributes (#1091)

* strengthen requirements for CL_DEVICE_TYPE query (#1069)

* strengthen requirements for CL_DEVICE_TYPE query

* require that an OpenCL device only reports a single device type

* clarify device types that may be used with clCreateContextFromType

* fix a markup issue regarding cl_khr_subgroup_extended_types (#1104)

* fix footnotes (#1097)

Moves text for CL_KERNEL_ARG_TYPE_QUALIFIER out of a footnote and
into the main spec text.
Removes link to the cl_khr_fp16 extension for the footnote.  This
is not ideal, but is a reasonable short-term solution.

* Fixup cl_khr_command_buffer after spec unification (#1089)

After PR #950 merged the cl_khr_command_buffer spec needs
updated in a couple of places:

* Error around _num_queues_ to `clCreateCommandBufferKHR` should
  be in terms of `cl_khr_command_buffer_multi_device`.
* "New Structure" heading can be deleted as these are listed under
  "New Types"
* Typos in rendering of some types

* Set anchor on `CL_COMMAND_BUFFER_MUTABLE_KHR` (#1115)

The link in the "New Enums" section of cl_khr_command_buffer_mutable_dispatch
doesn't lead anywhere otherwise.

* Fix provisional extension notes in appendices (#1113)

* Remove provisional notice include for recently ratified extensions

* Remove provisional_notice include for each provisional extensions.

Add a new subsection of the extensions appendix capturing the same
information. The autogenerated link in the extension metadata for each
provisional extension links to this subsection.

* Synchronize scripts with Vulkan and correct extension appendix section nesting (#1116)

The observable effects of this are

- Pushes the subsection titles in the extension appendices down one level, similar to #1087 but keeping the scripts in sync
- Adds an autogenerated 'API Interactions' section with currently only affects the cl_khr_command_buffer extension, since that's the only one with some APIs tagged in the XML as dependent on a particular core version

* Fix markup for a few extension names. (#1112)

* use the feature macro dictionary attributes in more places (#1107)

* add initial draft of Valid Usage and Undefined Behavior section (#1105)

* update generated version text for extension APIs and enums (#1108)

* add missing anchors (#1120)

* add missing anchors for external memory and semaphore commands

* add missing anchors for external memory handles
also a few missing anchors for various extensions

* fix a few more missing anchors and incorrect attributes

* cleans up extension metadata (#1122)

use a consistent order for new commands, types, enums, etc.
add a few missing extension types
do not use the new SPIR-V capabilities section
use consistent terminology

* fix section titles for sub-group extensions (#1124)

also fix a few other section titles for consistency

* adjustments to fix long table cells (#1125)

We really need a better long-term solution for this...

* Restore static refpages to the build (#1127)

These were commented out during debugging and not restored.
Also factors out a small difference between Vulkan and OpenCL scripts.

Closes #1121

* fix an incorrect link to cl_khr_async_work_group_copy_fence (#1132)

* add extension docs for spir-v-related extensions (#1123)

* add extension docs for spir-v-related extensions

cl_khr_spirv_extended_debug_info
cl_khr_spirv_linkonce_odr
cl_khr_spirv_no_integer_wrap_decoration

* fix extension name

* add and link error codes for extensions (#1119)

* add error codes for cl_khr_command_buffer

* add error codes for cl_khr_d3d10_sharing

* add error codes for cl_khr_d3d11_sharing

* error codes for cl_khr_dx9_media_sharing

* error codes for cl_khr_egl_event

* error codes for cl_khr_egl_image

* error codes for cl_khr_gl_sharing

* error codes for cl_khr_semaphore

* error codes for cl_khr_terminate_context

* error codes for cl_khr_command_buffer_mutable_dispatch

* fix typo

Co-authored-by: Alastair Murray <[email protected]>

---------

Co-authored-by: Alastair Murray <[email protected]>

* add a few missing enums to the XML file (#1118)

* add a few missing enums to the XML file
use the feature dictionaries in a lot more places

* add versioning macros to OpenCL 3.0

* update dictionary generation for API macros

* add missing anchors

* spec source for cl_khr_kernel_clock (#1103)

* spec source for cl_khr_kernel_clock

* updated after March 26th teleconference

Clarified that this is a provisional extension
Removed ext from feature names and feature test macros
Added undefined behavior description to the SPIR-V environment spec

* fix a few more places where the extension should be marked provisional

* clarify in a few more places that this extension is provisional

* remove provisional_notice.asciidoc, since it should not be used anymore

* generate and use an extension dictionary (#1131)

* generate and use an extension dictionary

* change cl_khr_kernel_clock to use asciidoctor attributes

* adding missing anchor for CL_MEM_DEVICE_HANDLE_LIST_END_KHR (#1134)

* remove nextafter TODO (#1140)

* briefly describe cl_mutable_base_config_khr structure (#1139)

* update non-provisional extensions to version 1.0.0 (#1133)

* update non-provisional extensions to version 1.0.0

* update a few other revision comments, just in case

* remove leftover conversion comments

* fix fract for double and half arguments (#1136)

* remove TODO and TBD placeholders (#1135)

* tidy up cl_khr_create_command_queue (#1138)

Removes unneeded special-case text regarding the type accepted for
CL_QUEUE_PROPERTIES.  Calling this a cl_bitfield was a bug all
along, and using cl_command_queue_properties is fine because it is
a bitfield anyhow.

Generalizes some text so it is not specific to OpenCL 2.x devices.

Removes a TODO - no changes required.

* bugfix: the geometric functions do not operate componentwise (#1137)

* update the quick reference list for finalized extensions (#1144)

* change log with changes from v3.0.15 (#1126)

* initial change log with changes from v3.0.15

* update cl_khr_kernel_clock link in a few other places

* final change log updates

* Fix a typo in the category ToC for the refpages (#1148)

* Fix a typo in the category ToC for the refpages

* Also fix a typo

* One more typo

* Add two missing extensions to extension.txt (#1162)

Change-Id: I44c78179ad6cfe9fc6da656aee72cae7adc0bf90

Signed-off-by: Kevin Petit <[email protected]>

* Define extension macros in environment specification (#1163)

This was missed during the spec unification work.


Change-Id: I23107b104431abdac2eaf8a3b1ebedd10303fc12

Signed-off-by: Kevin Petit <[email protected]>

* Remove unused cl_khr_external_memory_dx and cl_khr_external_semaphore_dx_fence extensions (#1160)

No implementers (and no interest expressed), no CTS tests. These extensions
should not be part of the specification.


Change-Id: I064076c8075b5947ef9109558c4b03da426e4505

Signed-off-by: Kevin Petit <[email protected]>

* Mention dependency on SPV_EXT_shader_atomic_float16_add in cl_ext_float_atomics (#1153)

The AtomicFloat16AddEXT capability it defines is referred to.


Change-Id: Icbae5f1ad02561e11517a47e9640eea4bc6a4283

Signed-off-by: Kevin Petit <[email protected]>

* remove an extra character in an OpenCL C example (#1172)

* Add revision to XML extensions (#1161)

This extension adds the revision field to the
XML tag for extensions. This allows a version
macro to be generated with:

* https://github.com/KhronosGroup/OpenCL-Headers/pull/251
* https://github.com/KhronosGroup/OpenCL-Headers/issues/248

KHR extensions are given a revision based on the semantic
version of the spec. However other extensions don't use
semantic versioning, and so are given a placeholder `0.0.0`
value until they can be updated by the owner.

The XML schema is also updated to make the revision field
mandatory in the XML entry for extensions and the
existence of the macro this enables is advertised to users
in the spec.

* Fix links to commands in API specification (#1179)

Links were not created for commands defined by extensions. With this
changes all uses of e.g. {clCreateSemaphoreWithPropertiesKHR} link
to the definition of the command which makes navigating the specification
much easier.


Change-Id: I4a9458609f4ba3229b66e3d169a68cb4564e2538

Signed-off-by: Kevin Petit <[email protected]>

* Clarify the definition of prerequisites to commands (#923)

* Clarify the definition of prerequisites to commands

- Reword the first source of prerequisites so the wording is symmetrical
  with respect to the others (i.e. the first/second/third ...).
- Broaden the first source of prerequisites to cover all implicit
  dependencies and provide an exhaustive list of how they arise: either
  because of barriers or because of ordering in in-order command-queues.

Signed-off-by: Kevin Petit <[email protected]>
Change-Id: Ic464066261fe13756347bafb4878cd6ffb5a8427

* Update api/opencl_architecture.asciidoc

---------

Signed-off-by: Kevin Petit <[email protected]>

* Use Khronos asciidoctor-spec Docker image in CI (#1196)

* Use Khronos asciidoctor-spec Docker image in CI

Per discussion with $bashbaug

N.b. at present the CI script has less parallelism than it could, at
least as I understand Actions. Some of the 'steps' could be split off
into 'jobs'. Might try that next once the basic build is working. Net
performance is still somewhat faster than current CI since it's
generally faster to load the container than to add needed packages at
each invocation, and the spec build is pretty fast, so there's not much
to be gained.

There was odd error behavior from shifting to the container which I have
never seen in Vulkan CI, having to do with mixed ownership of files in
the checked-out repository. I inserted a brute-force workaround right
after the checkout action.

* Update image (SHA changed, though not contents)

* Update to 20240702 Docker image which sets HOME=/tmp to avoid asciidoctor-pdf permission problems with tmpfiles in home directory /

* Fix SHA and remove fixed parallel job limit on manhtmlpages build

* Switch to '#!/usr/bin/env python3' shebang lines

Since the Docker build image runs a python virtual environment now.

Also added 'scripts/runDocker' script which will invoke docker locally
with the same image used in Github CI, for testing.

Note this script will pull over a GB of Docker stuff onto the machine
it's invoked on, if the image is not already cached.

* Empty commit to try and re-trigger the 'fatal' message...

... which appears sporadic, not easily replicable.

* Try to bulletproof the git invocations in Makefile

* Remove diagnostic job stage after bulletproofing (hopefully) the Makefile

For future reference, some of the git operations in CI and the Makefile
appear to *sporadically* fail in CI because of different checked-out
repo configurations.

I modified the 'git symbolic-ref' and 'git log' operations invoked from
the Makefile to detect errors and substitute a placeholder message,
based on similar changes to the Vulkan Makefile a while back. This
(appears) to eliminate the sporadic 'fatal' messages. We may need to do
that to the 'git describe' as well.

None of this reads on the generated artifacts, except that they may or
may not contain accurate tag / commit comments.

* Fix typo in clCreateProgramWithSource introduction (#1204)

Signed-off-by: Sven van Haastregt <[email protected]>

* Update extension template (#1197)

- Update format for specification versions. We now use MAJOR.MINOR.PATCH
as opposed to MAJOR.MINOR Revision PATCH.
- Include generated dictionaries by default.


Change-Id: Ie2cd8fc08ae6ec71d340bf9f274ffb17d8ebb118

Signed-off-by: Kevin Petit <[email protected]>

* cl_khr_external_semaphore: Clarify language (#938)

* cl_khr_external_semaphore: Clarify language

Refined the cl_khr_external_semaphore spec. Removed references
to permanence which appear to have been leveraged from the
Vulkan spec but don’t apply to the OpenCL spec in its current form.

* Fix table format

* clarify CL_DEVICE_TYPE_DEFAULT and CL_DEVICE_TYPE_ALL for custom devices (#1117)

* Fix typos in description of clReImportSemaphoreSyncFdKHR (#1208)

Also add to list of new commands in extension appendix.


Change-Id: I80b1d25368c2cefb0967120bdc429a8187c518c7

Signed-off-by: Kevin Petit <[email protected]>

* Add missing table end (#1206)

Introduced by #938


Change-Id: Ibef16bceb5398c49a14e88818a45236d0e17acf0

Signed-off-by: Kevin Petit <[email protected]>

* Fail spec creation if asciidoctor errors are encountered (#1205)

* Fail spec creation if asciidoctor errors are encountered

This would have enabled the CI to catch a markup issue introduced by #938.

Signed-off-by: Kevin Petit <[email protected]>
Change-Id: I49de3eaf623117f7c29d1019dedf5b342766a029

* attempt to fix asciidoctor errors in API spec

Change-Id: I0f9cbeddb72e0d76ba508b336d91c4ee640d77ad

---------

Signed-off-by: Kevin Petit <[email protected]>

* xml: require CL/GL types for cl_khr_gl_sharing (#1210)

So the type definitions are included in the generated cl_gl.h

Change-Id: I65a666dde8066958897acf13fb755ae2a3f3b52d

Signed-off-by: Kevin Petit <[email protected]>

* Add multi-device wording to clCommandBarrierWithWaitListKHR (#1146)

`clCommandBarrierWithWaitListKHR` does not having wording
for the `command_queue` parameter regarding when
`cl_khr_command_buffer_multi_device` is enabled.

* Fix CL_INVALID_CONTEXT command-buffer error definitions (#1149)

* Fix CL_INVALID_CONTEXT command-buffer error definitions

See issue https://github.com/KhronosGroup/OpenCL-Docs/issues/1147
documenting that the error specification for `CL_INVALID_CONTEXT`
doesn't take into account the variation when
`cl_khr_command_buffer_multi_device` is enabled.

Doing this change also picked up that the error wording for
`clCommandSVMMemcpyKHR` and `clCommandSVMMemFillKHR` referenced
the _kernel_ parameter which doesn't exist.

* Address review feedback

* Remove extraneous `cl_khr_command_buffer_multi_device` precondition
  from error wording.
* Change "enabled" terminology to "supported" with regards to
  extensions.

* Use array for clUpdateMutableCommandsKHR. (#1045)

Proposal to pass the update configs to `clUpdateMutableCommandsKHR` as
an array, rather than pointer changed linked list.

See https://github.com/KhronosGroup/OpenCL-Docs/issues/1041 for
motivation.

* Clarify Acquire/Release behavior for external memory (#1176)

* Clarify Acquire/Release behavior for external memory

Clarify Acquire/Release behavior for external memory specs
to call out the scope of operations as well as
the behavior in case of multiple acquire/release calls.

Fixes #1078, #1086

* Updates to Acquire/Release clarifications (#1183)

Address review comments on PR#1176

Fixes #1078, #1086

* Address left-over comments (#1194)

Address some of the comments that were
left out in earlier update.

* Fix the typo for "acquired"

Fix the typo suggested by Kevin to replace aquired to acquired.

Co-authored-by: Kévin Petit <[email protected]>

---------

Co-authored-by: Kévin Petit <[email protected]>

* Fix typo in description of clGetSemaphoreHandleForTypeKHR (#1220)

Change-Id: I694d985147ae8a78c25e6a29c49381e58faa3d8b

Signed-off-by: Kevin Petit <[email protected]>

* New Intel extension cl_intel_subgroup_buffer_prefetch (#1195)

* Publish the cl_img_matrix_multiply extension specification. (#1199)

* Publish cl_img_matrix_multiply extension specification.

* The final draft of the cl_img_matrix_multiply extension.

* Publish the cl_img_bitwise_ops extension specification.

* Revert "Publish the cl_img_bitwise_ops extension specification."

This reverts commit b17a1f7b3596601b314bdd3dd599c5b1afd85afd.

* Update extensions/cl_img_matrix_multiply.asciidoc

Listing the initial extension version.

Co-authored-by: Ben Ashbaugh <[email protected]>

* Update cl_img_matrix_multiply.asciidoc

Adding execution results to the coding samples

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* Publish the cl_img_bitwise_ops extension specification. (#1200)

* Publish the cl_img_bitwise_ops extension specification.

* Update extensions/cl_img_bitwise_ops.asciidoc

Listing the initial extension version.

Co-authored-by: Ben Ashbaugh <[email protected]>

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* Publish the cl_img_swap_ops extension specification. (#1201)

* Publish the cl_img_swap_ops extension specification.

* Update extensions/cl_img_swap_ops.asciidoc

Listing the initial extension version.

Co-authored-by: Ben Ashbaugh <[email protected]>

* Update cl_img_swap_ops.asciidoc

Defining behavior as undefined for cases when the number of work-items is not evenly divisible by four and if some work-items in the block of four are inactive, defining 1-dimensional local ID as a base for grouping work-items.

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* Publish the cl_img_memory_management extension specification. (#1202)

* Publish the cl_img_memory_management extension specification.

* Update extensions/cl_img_memory_management.asciidoc

Listing the initial extension version.

Co-authored-by: Ben Ashbaugh <[email protected]>

* Update cl_img_memory_management.asciidoc

Status changed to Final Draft

* Update cl_img_memory_management.asciidoc

Fix typo (unnecessary "new_alloc" in the enum item name).

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* Generate OpenCL C feature dictionary (#1212)

* Generate OpenCL C feature dictionary

Features are stored in a text file for now. Ultimately, we probably
want to use the XML registry for this.

Generation script taken from #1174 with a few modifications.

Contributes to #1166.

Signed-off-by: Ben Ashbaugh <[email protected]>
Signed-off-by: Kevin Petit <[email protected]>
Change-Id: Ie2c14148d75457030aa1a97cf601daba2c007397

* Update scripts/gen_c_feature_dictionary.py

Co-authored-by: Ben Ashbaugh <[email protected]>

* define __opencl_c_<feature_name> outside of the list of features

Signed-off-by: Kevin Petit <[email protected]>
Change-Id: I8e0947c30775338dd70803d09c7059d340e86f5a

---------

Signed-off-by: Ben Ashbaugh <[email protected]>
Signed-off-by: Kevin Petit <[email protected]>
Co-authored-by: Ben Ashbaugh <[email protected]>

* further clarify a clCreateBuffer with SVM pointer error condition (#1189)

It should also be invalid to use SVM host_ptr smaller than `size` in the CL_MEM_COPY_HOST_PTR case

* Begin integration of EXT extensions into the unified specification (#1213)

* Begin integration of EXT extensions into the unified specification

- Add a khr+ext spec type to makeSpec and cover in CI
- Document the version and dependencies of all EXT extensions in the XML
- Integrate cl_ext_cxx_for_opencl into the unified specification
- Add placeholder descriptions for all EXT extensions linking to either
  core/KHR features that supersede old extensions that were never
  part of the specification or the OpenCL Extensions document.

This enables us to integrate EXT extensions incrementally and integrate
future EXT extensions directly into the unified specification.

Change-Id: Ic634ce000ad3ebfb56e56bce91f9c0de3e786383
Signed-off-by: Kevin Petit <[email protected]>

* Update api/cl_ext_cxx_for_opencl.asciidoc

Co-authored-by: Ewan Crawford <[email protected]>

* remove dangling links in cl_ext_migrate_memobject appendix

Change-Id: I13b4860dfcd3d6d865b269847c5876bf75516e87

* add links to latest published ext specs

Change-Id: Ifddbbc47ddb0ac9be6327d9925682b96829d0946

---------

Signed-off-by: Kevin Petit <[email protected]>
Co-authored-by: Ewan Crawford <[email protected]>

* Clarify what re-import properties are accepted by clReImportSemaphoreSyncFdKHR (#1219)

Align the language to clCreateBufferWithProperties.


Change-Id: I58659fc9cd7fd3ae5178826285fd84d6932b29d8

Signed-off-by: Kevin Petit <[email protected]>

* fix EPSILON typo (#1225)

* remove duplicated extensions from quick reference table (#1229)

* fix asciidoctor rightarrow typo (#1234)

* update SPIR-V spec reference to SPIR-V 1.6 (#1237)

* Fix bullet typo in clEnqueueAcquireExternalMemObjectsKHR (#1224)

Signed-off-by: Gowtham Tammana <[email protected]>

* eliminate some duplicated words found in the spec (#1226)

* Add specification for cl_ext_image_unorm_int_2_101010 (#1223)

* Add specification for cl_ext_image_unorm_int_2_101010

Change-Id: I51b0ec6f719c30a01637c56047a86d31fd78b7ca

* Update OpenCL_C.txt

Co-authored-by: Ben Ashbaugh <[email protected]>

* review comments

Change-Id: Ib1ac6320c4f391336074f468158187e76099c7b9

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* Add mechanism to specify named win32 NT handles (#1177)

* Add mechanism to specify named win32 NT handles

Currently, cl_khr_external_semaphore and cl_khr_external_memory define properties
to specify external win32 NT handle via pointer. Win32 NT handles can also be specified
via named strings.

Add properties to specify external Win32 NT handles via named strings too.

Fixes #943

* Updates to win32 named handle type changes. (#1180)

Address review comments.

Fixes #943

* Drop NULL from named win32 handle description (#1187)

* Updates to win32 named handle type changes.

Address review comments.

Fixes #943

* Drop NULL from named win32 handle description.

Address review comments from Ben to remove NULL
from named win32 handle description.

Fixes #943

* Bump up spec versions for win32 (#1193)

Bump up spec versions for
cl_khr_external_memory_win32 from 1.0.0 to 1.1.0
and cl_khr_external_semaphore_win32 from 0.9.0 to 0.9.1

* fix typo and add OPAQUE_WIN32_NAME_KHR to semaphore enums list

* Update opencl_runtime_layer.asciidoc

 Fix typo during conflict resolution opencl_runtime_layer.asciidoc.

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* clarify no implicit dependencies when waiting on or signaling semaphores (#1231)

* Group or shorten the names of some API specification sections (#1250)

As discussed in teleconferences, the unification of the API specification
has led to some long-winded and/or redundant section headers. Here are
a few proposed changes that I find make the unified specification easier
to navigate.


Change-Id: I326f4195e5585a821d38f128bbc9d300f490631f

Signed-off-by: Kevin Petit <[email protected]>

* fix formatting for bulleted list (#1253)

* add nofooter by default when building the OpenCL specs (#1252)

This will minimize diffs in the future, especially for things like
the reference pages that may change infrequently.

* Add properties parameter to all command-buffer commands (#1215)

* Add properties parameter to all command-buffer commands

See Issue https://github.com/KhronosGroup/OpenCL-Docs/issues/1207
disucssion how it could make the `cl_khr_command_buffer` extension
more extensible if we allowed all the command-recording parameters
to have a `properties` parameter that could be used.

* fix misspelling

* Update clGetMutableCommandInfoKHR table

* Rename query to `CL_MUTABLE_COMMAND_PROPERTIES_ARRAY_KHR`

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* add an issue about zero-sized allocations (#1083)

* document int4 functions and functions with other return types (#1181)

* generate an OpenCL C built-in functions dictionary (#1228)

* generate an OpenCL C built-in functions dictionary

* switch command line argument to specify input file to -i

* clarify num_mip_levels (#1255)

* platform: Clarify behavior for ATOMIC_SCOPE_ALL_DEVICES #1129 (#1171)

* platform: Clarify behavior for ATOMIC_SCOPE_ALL_DEVICES

* Adjusted table widths to prevent overflow beyond a page

Asciidr has a limitation that prevents table cells from
spanning across pages

* Update api/opencl_platform_layer.asciidoc

Co-authored-by: Ben Ashbaugh <[email protected]>

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* clarify clGetSemaphoreHandleForTypeKHR is part of cl_khr_external_semaphore (#1257)

* unify the CL_INVALID_COMMAND_QUEUE behavior for semaphore signals and waits (#1256)

* ARM => Arm (#1263)

* `cl_intel_driver_diagnostics` (#1260)

`cl_diagnostics_verbose_level` => `cl_diagnostic_verbose_level_intel`

* Add error when memory objects or semaphores are created with more than one external handle (#1249)

Also link the description of external semaphore handles to the spec
for clCreateSemaphoreWithPropertiesKHR.

Fixes #1246


Change-Id: Ifb4c02795c6d4db8aee9b5f14b10fecd26992fd5

Signed-off-by: Kevin Petit <[email protected]>

* Clarify that we do not remove functionality in minor versions of OpenCL (#1265)

Change-Id: Iee7de47816ae8f40f684d713ad53bd886f4fcbd5

Signed-off-by: Kevin Petit <[email protected]>

* Use "associated with" for external memory and semaphroes (#1268)

Replace "accessible to" with "associated with" for describing
the devices the external memory and semaphore are valid for.

Fixes #1240

* add description of supported printf operand types (#1236)

* improve param_value_size consistency (#1254)

* fix descriptions of param_value_size for consistency

Still need to check and update error conditions for consistency.

* improve consistency for error descriptions too

* fix CL_INVALID_VALUE error for clGetGLContextInfoKHR

* clarify how to properly use and modify shared OpenCL objects (#1243)

Refer to the OpenCL memory consistency model vs. duplicating requirements.

* document valid coordinate types when reading from or writing to images (#1242)

* add unsafe math optimization error bounds for the non-derived atan2 (#1073)

* clarify the minimum value for CL_DEVICE_HALF_FP_CONFIG (#1273)

The minimum value for CL_DEVICE_HALF_FP_CONFIG applies to devices
supporting all OpenCL versions, not just for OpenCL 2.0 or newer
devices.

* add additional clarification for num_mip_levels (#1272)

* rephrase and correct the descriptions for clSetKernelExecInfo (#1245)

* rephrase and correct the descriptions for clSetKernelExecInfo

* further wordsmithing
clarify that CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM does not
affect kernel arguments

* fix typo

* simplify CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM

* change log with changes from v3.0.16 (#1274)

* initial change log for changes to 3.0.16

* update with last-minute changes

* add named NT handles to external memory in addition to semaphores

* clarify cl_mem_flags to not affect copies (#1230)

* Reserve cl_mem_flags bit for cl_ext_immutable_memory_objects (#1285)

Relates to #1280


Change-Id: I66b553b4708b913a219d803e45ab7dd6cfb8fe93

Signed-off-by: Kevin Petit <[email protected]>

* cl_khr_command_buffer sync-point capacity (#1286)

* cl_khr_command_buffer sync-point capacity

Document the behaviour when command-buffer command capacity
is reached, and track under "Issues" the possible future
use-cases for being able to optimize based on the capacity
of a command-buffer.

Closes https://github.com/KhronosGroup/OpenCL-Docs/issues/844

* Refine out-of-order command-buffer enqueue wording

* Update api/cl_khr_command_buffer.asciidoc

Co-authored-by: Ben Ashbaugh <[email protected]>

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* Document img 1x2_2x2 matmul functions. (#1283)

* document img 1x2_2x2 matmul functions.

* Correct the description of matmul with saturation.

* Address review comments.

* Update cl.xml (#1289)

Reserving OpenCL Enumerant range for vendor Mastiṣka AI

* Integrate cl_ext_image_requirements_info into unified specification (#1295)

* Integrate cl_ext_image_requirements_info into unified specification

Signed-off-by: Kevin Petit <[email protected]>
Change-Id: Ia249f78aa521a8d202dfafbb736c9887574e56f9

* Update api/opencl_runtime_layer.asciidoc

Co-authored-by: Ben Ashbaugh <[email protected]>

* Update api/opencl_runtime_layer.asciidoc

Co-authored-by: Ben Ashbaugh <[email protected]>

---------

Signed-off-by: Kevin Petit <[email protected]>
Co-authored-by: Ben Ashbaugh <[email protected]>

* Command-buffer query for supported queue properties (#850)

This change introduces a new device query related to the
command-buffer extension -
`CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR`.

This is different from
`CL_DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES_KHR`, as we want
to convey to the user that an implementation supports using a queue
property with a command-buffer, but is not *required* to use the
property.

This supersedes reporting queue related values from the
`CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR` query. The flaw
with `CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR` is that it contains bits
explicitly added by the command-buffer extension for reporting support for
queue properties. This is a brittle design, as any new queue property added
in future would need to have a new bit added here in the command-buffer extension
to report support when used with command-buffers.

Instead a better design is to have a new query reporting queue
properties supported,
`CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR`, and keeping
`CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR` for capabilities unrelated
to the command-queue properties.

The `CL_COMMAND_BUFFER_CAPABILITY_OUT_OF_ORDER_KHR` use-case can now be
covered by returning
`CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE` from
`CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR`, so it is
removed.

* OpenCL C: Update ULP requirements for half-precision divide and reciprocal (#1293)

* OpenCL C: Update ULP requirements for half-precision divide and reciprocal

Update ULP requirements for these builtins to 1.0 as per discussion
on #1278

* Restrict update to divide for now

* Update SPIR-V environment spec to set fp-16 divide ULP to 1.0

* relax reciprocal ULP requirement also

---------

Co-authored-by: Ben Ashbaugh <[email protected]>

* Fix formatting issues in builtins tables (#1290)

1. Add missing newline between double and half versions of 'ldexp'
2. Fix formatting of snippets in 'mix'

* Integrate cl_ext_image_from_buffer into unified specification (#1299)

* Integrate cl_ext_image_from_buffer into unified specification

Also add version notes for all CL_IMAGE_REQUIREMENTS_* enums.

Signed-off-by: Kevin Petit <[email protected]>
Change-Id: I7b7b093034121a9215786beff7318b18e7d0c24a

* Update api/opencl_runtime_layer.asciidoc

Co-authored-by: Ben Ashbaugh <[email protected]>

* Update api/footnotes.asciidoc

Co-authored-by: Ben Ashbaugh <[email protected]>

* Update api/cl_ext_image_from_buffer.asciidoc

---------

Signed-off-by: Kevin Petit <[email protected]>
Co-authored-by: Ben Ashbaugh <[email protected]>

* Refactor command-buffer queue compatability (#1292)

* Refactor command-buffer queue compatability

As proposed in https://github.com/KhronosGroup/OpenCL-Docs/issues/1142
the PR changes the semantics of the command-queues parameters used for
command-buffer creation and enqueue.

The queues used on command-buffer creation now only inform the
device and dependencies of commands, rather than restricting the
properties set on the queues used for command-buffer enqueue.

This is based ontop on the change in https://github.com/KhronosGroup/OpenCL-Docs/pull/850
to add supported queue property semantics.

* Address review feedback

Clarify wording around default list of command-queues used for command-buffer
enqueue.

* Update XML version

* update the spec source copyright dates to 2025 (#1301)

* [NFC] Fix typo in address space conversion example (#1322)

* cl_ext_buffer_device_address (#1159)

* cl_ext_buffer_device_address

The basic cl_mem buffer API doesn't enable access to the underlying raw
pointers in the device memory, preventing its use in host side
data structures that need pointer references to objects. This API
adds a minimal increment on top of cl_mem that provides such
capabilities.

* BDA: Removed CL_MEM_DEVICE_SHARED_ADDRESS_EXT as unneeded.

Also made the enums globally unique.

* cl_ext_buffer_device_address to 1.0.0

The only content addition since the previous version is

"If the device supports SVM and {clCreateBufferWithProperties} is
 called with a pointer returned by {clSVMAlloc} as its _host_ptr_
 argument, and {CL_MEM_USE_HOST_PTR} is set in its _flags_ argument,
 the device-side address is guaranteed to match the _host_ptr."

* cl_ext_buffer_device_address: Revision 1.0.1

* Made it explicit that passing illegal pointers is legal as long
as they are not referenced.
* Removed CL_INVALID_ARG_VALUE as a possible error in
clSetKernelArgDevicePointerEXT() as there are no illegal pointer
cases when calling this function. Return CL_INVALID_OPERATION for
clGetMemObjectInfo() if the pointer is not a buffer device
pointer.
* clSetKernelExecInfo() and clSetKernelArgDevicePointerEXT() now
only error out if no devices in the context associated with kernel
support device pointers.

* cl_ext_buffer_device_address: Revision 1.0.2

Converted the clSetKernelArgDevicePointerEXT() address parameter to
a value instead of a pointer to the value.

* clarify unsafe math accuracy requirements for the embedded profile (#1318)

Clarifies the unsafe math accuracy requirements for divide, reciprocal,
exp, and exp2 for the embedded profile.  The previous wording was
ambiguous, and could have been interpreted to mean that the embedded
profile had stricter accuracy requirements than the full profile.

* clarify printf format

The intent behind "resolvable at compile time" is that format cannot be a kernel argument, i.e. it can only be a string literal.

* setting kernel arguments before recording it in command buffer

Add an image for the life cycle in mutable command buffers and specify that there is no need to set all the kernel arguments before recording it.

* make changes in the original life cycle image

* changes according to Ewan's comments

* Update opencl_runtime_layer.asciidoc

* Update cl_khr_command_buffer_mutable_dispatch.asciidoc

* Update .gitignore and documentation for command buffer states

* Update api/opencl_runtime_layer.asciidoc

Co-authored-by: Ewan Crawford <[email protected]>

* Update cl_khr_command_buffer_mutable_dispatch.asciidoc and cl.xml for
experimental status and enum reordering

* Update api/cl_khr_command_buffer_mutable_dispatch.asciidoc

Co-authored-by: Ewan Crawford <[email protected]>

* Update opencl_runtime_layer.asciidoc and cl.xml to enhance command buffer error handling and state requirements

* remove Pending state form command buffer lifecycle

* move CL_COMMAND_BUFFER_STATE_FINALIZED_KHR to cl_khr_command_buffer_mutable_dispatch

* Update api/opencl_runtime_layer.asciidoc

Co-authored-by: Ewan Crawford <[email protected]>

* Update api/opencl_runtime_layer.asciidoc

Co-authored-by: Ewan Crawford <[email protected]>

---------

Signed-off-by: Kevin Petit <[email protected]>
Signed-off-by: Sven van Haastregt <[email protected]>
Signed-off-by: Ben Ashbaugh <[email protected]>
Signed-off-by: Gowtham Tammana <[email protected]>
Co-authored-by: Ewan Crawford <[email protected]>
Co-authored-by: Sun Serega <[email protected]>
Co-authored-by: joshqti <[email protected]>
Co-authored-by: Jon Leech <[email protected]>
Co-authored-by: Ben Ashbaugh <[email protected]>
Co-authored-by: Kévin Petit <[email protected]>
Co-authored-by: Alastair Murray <[email protected]>
Co-authored-by: Sreelakshmi Haridas Maruthur <[email protected]>
Co-authored-by: Joshua Kelly <[email protected]>
Co-authored-by: jebasamuelimg <[email protected]>
Co-authored-by: paulfradgley <[email protected]>
Co-authored-by: Yuki K <[email protected]>
Co-authored-by: Ewan Crawford <[email protected]>
Co-authored-by: Kévin Petit <[email protected]>
Co-authored-by: Sven van Haastregt <[email protected]>
Co-authored-by: Nikhil Joshi <[email protected]>
Co-authored-by: Grzegorz Wawiorko <[email protected]>
Co-authored-by: tomasz-platek <[email protected]>
Co-authored-by: Karol Herbst <[email protected]>
Co-authored-by: Gowtham Tammana <[email protected]>
Co-authored-by: Sreelakshmi Haridas Maruthur <[email protected]>
Co-authored-by: Chuang-Yu Cheng <[email protected]>
Co-authored-by: ssugumar-mstk <[email protected]>
Co-authored-by: Fraser Cormack <[email protected]>
Co-authored-by: Wenju He <[email protected]>
Co-authored-by: Pekka Jääskeläinen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants