Skip to content

Commit

Permalink
Fix CL_INVALID_CONTEXT command-buffer error definitions (#1149)
Browse files Browse the repository at this point in the history
* Fix CL_INVALID_CONTEXT command-buffer error definitions

See issue #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.
  • Loading branch information
EwanC authored Jul 16, 2024
1 parent 85f5032 commit fed48e7
Showing 1 changed file with 69 additions and 22 deletions.
91 changes: 69 additions & 22 deletions api/opencl_runtime_layer.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -14349,8 +14349,10 @@ Otherwise, it returns one of the following errors:
command-queue listed on _command_buffer_ creation.
* {CL_INVALID_COMMAND_BUFFER_KHR} if _command_buffer_ is not a valid
command-buffer.
* {CL_INVALID_CONTEXT} if the context associated with _command_queue_ and
_command_buffer_ is not the same.
ifdef::cl_khr_command_buffer_multi_device[]
* {CL_INVALID_CONTEXT} if _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.
endif::cl_khr_command_buffer_multi_device[]
* {CL_INVALID_OPERATION} if _command_buffer_ has been finalized.
* {CL_INVALID_VALUE} if _mutable_handle_ is not `NULL`.
* {CL_INVALID_SYNC_POINT_WAIT_LIST_KHR} if _sync_point_wait_list_ is
Expand Down Expand Up @@ -14432,8 +14434,12 @@ Otherwise, it returns the errors defined by {clEnqueueCopyBuffer} except:

{CL_INVALID_CONTEXT} is replaced with:

* {CL_INVALID_CONTEXT} if the context associated with _command_queue_,
_command_buffer_, _src_buffer_, and _dst_buffer_ are not the same.
* {CL_INVALID_CONTEXT} if the context associated with _command_buffer_,
_src_buffer_, and _dst_buffer_ is not the same.
ifdef::cl_khr_command_buffer_multi_device[]
* {CL_INVALID_CONTEXT} if _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.
endif::cl_khr_command_buffer_multi_device[]

{CL_INVALID_EVENT_WAIT_LIST} is replaced with:

Expand Down Expand Up @@ -14537,8 +14543,12 @@ except:

{CL_INVALID_CONTEXT} is replaced with:

* {CL_INVALID_CONTEXT} if the context associated with _command_queue_,
_command_buffer_, _src_buffer_, and _dst_buffer_ are not the same.
* {CL_INVALID_CONTEXT} if the context associated with _command_buffer_,
_src_buffer_, and _dst_buffer_ is not the same.
ifdef::cl_khr_command_buffer_multi_device[]
* {CL_INVALID_CONTEXT} if _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.
endif::cl_khr_command_buffer_multi_device[]

{CL_INVALID_EVENT_WAIT_LIST} is replaced with:

Expand Down Expand Up @@ -14625,8 +14635,12 @@ except:

{CL_INVALID_CONTEXT} is replaced with:

* {CL_INVALID_CONTEXT} if the context associated with _command_queue_,
_command_buffer_, _src_buffer_, and _dst_image_ are not the same.
* {CL_INVALID_CONTEXT} if the context associated with _command_buffer_,
_src_buffer_, and _dst_image_ is not the same.
ifdef::cl_khr_command_buffer_multi_device[]
* {CL_INVALID_CONTEXT} if _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.
endif::cl_khr_command_buffer_multi_device[]

{CL_INVALID_EVENT_WAIT_LIST} is replaced with:

Expand Down Expand Up @@ -14719,8 +14733,12 @@ Otherwise, it returns the errors defined by {clEnqueueCopyImage} except:

{CL_INVALID_CONTEXT} is replaced with:

* {CL_INVALID_CONTEXT} if the context associated with _command_queue_,
_command_buffer_, _src_image_, and _dst_image_ are not the same.
* {CL_INVALID_CONTEXT} if the context associated with _command_buffer_,
_src_image_, and _dst_image_ is not the same.
ifdef::cl_khr_command_buffer_multi_device[]
* {CL_INVALID_CONTEXT} if _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.
endif::cl_khr_command_buffer_multi_device[]

{CL_INVALID_EVENT_WAIT_LIST} is replaced with:

Expand Down Expand Up @@ -14807,8 +14825,12 @@ except:

{CL_INVALID_CONTEXT} is replaced with:

* {CL_INVALID_CONTEXT} if the context associated with _command_queue_,
_command_buffer_, _src_image_, and _dst_buffer_ are not the same.
* {CL_INVALID_CONTEXT} if the context associated with _command_buffer_,
_src_image_, and _dst_buffer_ is not the same.
ifdef::cl_khr_command_buffer_multi_device[]
* {CL_INVALID_CONTEXT} _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.
endif::cl_khr_command_buffer_multi_device[]

{CL_INVALID_EVENT_WAIT_LIST} is replaced with:

Expand Down Expand Up @@ -14902,8 +14924,12 @@ Otherwise, it returns the errors defined by {clEnqueueFillBuffer} except:

{CL_INVALID_CONTEXT} is replaced with:

* {CL_INVALID_CONTEXT} if the context associated with _command_queue_,
_command_buffer_, and _buffer_ are not the same.
* {CL_INVALID_CONTEXT} if the context associated with _command_buffer_ and
_buffer_ is not the same.
ifdef::cl_khr_command_buffer_multi_device[]
* {CL_INVALID_CONTEXT} if _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.
endif::cl_khr_command_buffer_multi_device[]

{CL_INVALID_EVENT_WAIT_LIST} is replaced with:

Expand Down Expand Up @@ -14995,8 +15021,12 @@ Otherwise, it returns the errors defined by {clEnqueueFillImage} except:

{CL_INVALID_CONTEXT} is replaced with:

* {CL_INVALID_CONTEXT} if the context associated with _command_queue_,
_command_buffer_, and _image_ are not the same.
* {CL_INVALID_CONTEXT} if the context associated with _command_buffer_ and
_image_ is not the same.
ifdef::cl_khr_command_buffer_multi_device[]
* {CL_INVALID_CONTEXT} if _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.
endif::cl_khr_command_buffer_multi_device[]

{CL_INVALID_EVENT_WAIT_LIST} is replaced with:

Expand Down Expand Up @@ -15239,8 +15269,12 @@ Otherwise, it returns the errors defined by {clEnqueueNDRangeKernel} except:

{CL_INVALID_CONTEXT} is replaced with:

* {CL_INVALID_CONTEXT} if the context associated with _command_queue_,
_command_buffer_, and _kernel_ are not the same.
* {CL_INVALID_CONTEXT} if the context associated with _command_buffer_ and
_kernel_ is not the same.
ifdef::cl_khr_command_buffer_multi_device[]
* {CL_INVALID_CONTEXT} if _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.
endif::cl_khr_command_buffer_multi_device[]

{CL_INVALID_EVENT_WAIT_LIST} is replaced with:

Expand Down Expand Up @@ -15353,10 +15387,17 @@ Otherwise, it returns the errors defined by {clEnqueueSVMMemcpy} except:
more than one queue, or _command_queue_ is not `NULL` and not a
command-queue listed on _command_buffer_ creation.

ifdef::cl_khr_command_buffer_multi_device[]
{CL_INVALID_CONTEXT} is replaced with:

* {CL_INVALID_CONTEXT} if the context associated with _command_queue_,
_command_buffer_, and _kernel_ are not the same.
* {CL_INVALID_CONTEXT} if _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.

endif::cl_khr_command_buffer_multi_device[]

ifndef::cl_khr_command_buffer_multi_device[]
{CL_INVALID_CONTEXT} error case is removed.
endif::cl_khr_command_buffer_multi_device[]

{CL_INVALID_EVENT_WAIT_LIST} is replaced with:

Expand Down Expand Up @@ -15459,10 +15500,16 @@ successfully. Otherwise, it returns the errors defined by
more than one queue, or _command_queue_ is not `NULL` and not a
command-queue listed on _command_buffer_ creation.

ifdef::cl_khr_command_buffer_multi_device[]
{CL_INVALID_CONTEXT} is replaced with:

* {CL_INVALID_CONTEXT} if the context associated with _command_queue_,
_command_buffer_, and _kernel_ are not the same.
* {CL_INVALID_CONTEXT} if _command_queue_ is not `NULL`, and the context
associated with _command_queue_ and _command_buffer_ is not the same.
endif::cl_khr_command_buffer_multi_device[]

ifndef::cl_khr_command_buffer_multi_device[]
{CL_INVALID_CONTEXT} error case is removed.
endif::cl_khr_command_buffer_multi_device[]

{CL_INVALID_EVENT_WAIT_LIST} is replaced with:

Expand Down

0 comments on commit fed48e7

Please sign in to comment.