Skip to content

Commit a78667f

Browse files
committed
Merge branch 'main' into cl_khr_unified_svm
2 parents ce19c48 + 942bf52 commit a78667f

File tree

5 files changed

+53
-45
lines changed

5 files changed

+53
-45
lines changed

include/CL/opencl.hpp

Lines changed: 52 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,11 @@
173173
* Enable exceptions for use in the C++ bindings header. This is the
174174
* preferred error handling mechanism but is not required.
175175
*
176+
* - CL_HPP_CUSTOM_EXCEPTION_TYPE
177+
*
178+
* Specify the type which should be used for exceptions. This type
179+
* must have a constructor accepting an int and a const char*.
180+
*
176181
* - CL_HPP_ENABLE_SIZE_T_COMPATIBILITY
177182
*
178183
* Backward compatibility option to support cl.hpp-style size_t
@@ -740,6 +745,7 @@ namespace cl {
740745
#endif // cl_khr_command_buffer
741746

742747
#if defined(CL_HPP_ENABLE_EXCEPTIONS)
748+
#if !defined(CL_HPP_CUSTOM_EXCEPTION_TYPE)
743749
/*! \brief Exception class
744750
*
745751
* This may be thrown by API functions when CL_HPP_ENABLE_EXCEPTIONS is defined.
@@ -782,6 +788,9 @@ namespace cl {
782788
*/
783789
cl_int err(void) const { return err_; }
784790
};
791+
#else
792+
using Error = CL_HPP_CUSTOM_EXCEPTION_TYPE;
793+
#endif
785794
#define CL_HPP_ERR_STR_(x) #x
786795
#else
787796
#define CL_HPP_ERR_STR_(x) nullptr
@@ -1501,6 +1510,9 @@ inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_
15011510
F(cl_device_info, CL_DEVICE_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR, cl::vector<cl_external_semaphore_handle_type_khr>) \
15021511
F(cl_semaphore_info_khr, CL_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR, cl::vector<cl_external_semaphore_handle_type_khr>) \
15031512

1513+
#define CL_HPP_PARAM_NAME_CL_KHR_EXTERNAL_SEMAPHORE_DX_FENCE_EXT(F) \
1514+
F(cl_external_semaphore_handle_type_khr, CL_SEMAPHORE_HANDLE_D3D12_FENCE_KHR, void*) \
1515+
15041516
#define CL_HPP_PARAM_NAME_CL_KHR_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXT(F) \
15051517
F(cl_external_semaphore_handle_type_khr, CL_SEMAPHORE_HANDLE_OPAQUE_FD_KHR, int) \
15061518

@@ -1663,6 +1675,19 @@ CL_HPP_PARAM_NAME_CL_KHR_EXTERNAL_MEMORY_(CL_HPP_DECLARE_PARAM_TRAITS_)
16631675
CL_HPP_PARAM_NAME_CL_KHR_EXTERNAL_SEMAPHORE_(CL_HPP_DECLARE_PARAM_TRAITS_)
16641676
#endif // cl_khr_external_semaphore
16651677

1678+
#if defined(cl_khr_external_semaphore_dx_fence)
1679+
CL_HPP_PARAM_NAME_CL_KHR_EXTERNAL_SEMAPHORE_DX_FENCE_EXT(CL_HPP_DECLARE_PARAM_TRAITS_)
1680+
#endif // cl_khr_external_semaphore_dx_fence
1681+
#if defined(cl_khr_external_semaphore_opaque_fd)
1682+
CL_HPP_PARAM_NAME_CL_KHR_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXT(CL_HPP_DECLARE_PARAM_TRAITS_)
1683+
#endif // cl_khr_external_semaphore_opaque_fd
1684+
#if defined(cl_khr_external_semaphore_sync_fd)
1685+
CL_HPP_PARAM_NAME_CL_KHR_EXTERNAL_SEMAPHORE_SYNC_FD_EXT(CL_HPP_DECLARE_PARAM_TRAITS_)
1686+
#endif // cl_khr_external_semaphore_sync_fd
1687+
#if defined(cl_khr_external_semaphore_win32)
1688+
CL_HPP_PARAM_NAME_CL_KHR_EXTERNAL_SEMAPHORE_WIN32_EXT(CL_HPP_DECLARE_PARAM_TRAITS_)
1689+
#endif // cl_khr_external_semaphore_win32
1690+
16661691
#if defined(cl_khr_device_uuid)
16671692
using uuid_array = array<cl_uchar, CL_UUID_SIZE_KHR>;
16681693
using luid_array = array<cl_uchar, CL_LUID_SIZE_KHR>;
@@ -2031,6 +2056,17 @@ struct ReferenceHandler<cl_event>
20312056
{ return CL_(clReleaseEvent)(event); }
20322057
};
20332058

2059+
#ifdef cl_khr_semaphore
2060+
template <>
2061+
struct ReferenceHandler<cl_semaphore_khr>
2062+
{
2063+
static cl_int retain(cl_semaphore_khr semaphore)
2064+
{ return CL_(clRetainSemaphoreKHR)(semaphore); }
2065+
2066+
static cl_int release(cl_semaphore_khr semaphore)
2067+
{ return CL_(clReleaseSemaphoreKHR)(semaphore); }
2068+
};
2069+
#endif // cl_khr_semaphore
20342070
#if defined(cl_khr_command_buffer)
20352071
template <>
20362072
struct ReferenceHandler<cl_command_buffer_khr>
@@ -2040,6 +2076,17 @@ struct ReferenceHandler<cl_command_buffer_khr>
20402076
static cl_int release(cl_command_buffer_khr cmdbuf)
20412077
{ return CL_(clReleaseCommandBufferKHR)(cmdbuf); }
20422078
};
2079+
2080+
template <>
2081+
struct ReferenceHandler<cl_mutable_command_khr>
2082+
{
2083+
// cl_mutable_command_khr does not have retain().
2084+
static cl_int retain(cl_mutable_command_khr)
2085+
{ return CL_SUCCESS; }
2086+
// cl_mutable_command_khr does not have release().
2087+
static cl_int release(cl_mutable_command_khr)
2088+
{ return CL_SUCCESS; }
2089+
};
20432090
#endif // cl_khr_command_buffer
20442091

20452092

@@ -11010,60 +11057,24 @@ namespace compatibility {
1101011057

1101111058

1101211059
#if defined(cl_khr_command_buffer)
11013-
1101411060
/*! \class CommandBuffer
1101511061
* \brief CommandBuffer interface for cl_command_buffer_khr.
1101611062
*/
1101711063
class CommandBuffer : public detail::Wrapper<cl_command_buffer_khr>
1101811064
{
1101911065
public:
11020-
CommandBuffer() {}
11066+
//! \brief Default constructor - initializes to nullptr.
11067+
CommandBuffer() : detail::Wrapper<cl_type>() { }
1102111068

11022-
/*! \brief Constructor from cl_command_queue - takes ownership.
11023-
*
11024-
* \param retainObject will cause the constructor to retain its cl object.
11025-
* Defaults to false to maintain compatibility with
11026-
* earlier versions.
11027-
*/
1102811069
explicit CommandBuffer(cl_command_buffer_khr cmdbuf, bool retainObject = false) :
1102911070
detail::Wrapper<cl_type>(cmdbuf, retainObject) { }
1103011071

11031-
// TODO: other overloads!
11032-
1103311072
CommandBuffer& operator = (const cl_command_buffer_khr& rhs)
1103411073
{
1103511074
detail::Wrapper<cl_type>::operator=(rhs);
1103611075
return *this;
1103711076
}
1103811077

11039-
/*! \brief Copy constructor to forward copy to the superclass correctly.
11040-
* Required for MSVC.
11041-
*/
11042-
CommandBuffer(const CommandBuffer& cmdbuf) : detail::Wrapper<cl_type>(cmdbuf) {}
11043-
11044-
/*! \brief Copy assignment to forward copy to the superclass correctly.
11045-
* Required for MSVC.
11046-
*/
11047-
CommandBuffer& operator = (const CommandBuffer& cmdbuf)
11048-
{
11049-
detail::Wrapper<cl_type>::operator=(cmdbuf);
11050-
return *this;
11051-
}
11052-
11053-
/*! \brief Move constructor to forward move to the superclass correctly.
11054-
* Required for MSVC.
11055-
*/
11056-
CommandBuffer(CommandBuffer&& cmdbuf) noexcept : detail::Wrapper<cl_type>(std::move(cmdbuf)) {}
11057-
11058-
/*! \brief Move assignment to forward move to the superclass correctly.
11059-
* Required for MSVC.
11060-
*/
11061-
CommandBuffer& operator = (CommandBuffer &&cmdbuf)
11062-
{
11063-
detail::Wrapper<cl_type>::operator=(std::move(cmdbuf));
11064-
return *this;
11065-
}
11066-
1106711078
template <typename T>
1106811079
cl_int getInfo(cl_command_buffer_info_khr name, T* param) const
1106911080
{
@@ -11074,8 +11085,8 @@ class CommandBuffer : public detail::Wrapper<cl_command_buffer_khr>
1107411085
}
1107511086

1107611087
template <cl_command_buffer_info_khr name> typename
11077-
detail::param_traits<detail::cl_command_buffer_info_khr, name>::param_type
11078-
getInfo(cl_int* err = nullptr) const
11088+
detail::param_traits<detail::cl_command_buffer_info_khr, name>::param_type
11089+
getInfo(cl_int* err = nullptr) const
1107911090
{
1108011091
typename detail::param_traits<
1108111092
detail::cl_command_buffer_info_khr, name>::param_type param{};
@@ -11086,7 +11097,7 @@ class CommandBuffer : public detail::Wrapper<cl_command_buffer_khr>
1108611097
return param;
1108711098
}
1108811099

11089-
cl_int finalize(void)
11100+
cl_int finalize() const
1109011101
{
1109111102
return detail::errHandler(
1109211103
CL_(clFinalizeCommandBufferKHR)(object_),

samples/12_commandbuffers/main.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,6 @@ int main(
243243
printf("\t\tCL_COMMAND_BUFFER_STATE_KHR: %s\n",
244244
state == CL_COMMAND_BUFFER_STATE_RECORDING_KHR ? "RECORDING" :
245245
state == CL_COMMAND_BUFFER_STATE_EXECUTABLE_KHR ? "EXECUTABLE" :
246-
state == CL_COMMAND_BUFFER_STATE_PENDING_KHR ? "PENDING" :
247246
"UNKNOWN!");
248247

249248
size_t propsSize = 0;

samples/12_commandbufferspp/main.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,6 @@ int main(
187187
printf("\t\tCL_COMMAND_BUFFER_STATE_KHR: %s\n",
188188
state == CL_COMMAND_BUFFER_STATE_RECORDING_KHR ? "RECORDING" :
189189
state == CL_COMMAND_BUFFER_STATE_EXECUTABLE_KHR ? "EXECUTABLE" :
190-
state == CL_COMMAND_BUFFER_STATE_PENDING_KHR ? "PENDING" :
191190
"UNKNOWN!");
192191

193192
printf("\t\tCL_COMMAND_BUFFER_PROPERTIES_ARRAY_KHR size: %zu\n",

samples/13_mutablecommandbuffers/main.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,6 @@ int main(
275275
printf("\t\tCL_COMMAND_BUFFER_STATE_KHR: %s\n",
276276
state == CL_COMMAND_BUFFER_STATE_RECORDING_KHR ? "RECORDING" :
277277
state == CL_COMMAND_BUFFER_STATE_EXECUTABLE_KHR ? "EXECUTABLE" :
278-
state == CL_COMMAND_BUFFER_STATE_PENDING_KHR ? "PENDING" :
279278
"UNKNOWN!");
280279

281280
size_t propsSize = 0;

samples/16_floatatomics/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ This sample also includes fallback implementations when the `cl_ext_float_atomic
1717
* The second emulates the floating-point atomic add using 32-bit `atomic_cmpxchg` functions.
1818
This is a slower emulation, but it is able to reliably return the "old" value that was in memory before performing the atomic add.
1919

20-
This sample was inspired by the blog post: https://pipinspace.github.io/blog/atomic-float-addition-in-opencl.html
20+
This sample was inspired by the blog post: https://violetspace.github.io/blog/atomic-float-addition-in-opencl.html
2121

2222
## Key APIs and Concepts
2323

0 commit comments

Comments
 (0)