2
0

P4 to Git Change 1475427 by lmoriche@lmoriche_opencl_dev2 on 2017/10/26 18:17:19

SWDEV-126884 - OCL 2.1 Platform APIs
	- Add OpenCL 2.2 clSetProgramSpecializationConstant and clSetProgramReleaseCallback stubs.

Affected files ...

... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_icd.cpp#31 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_program.cpp#44 edit
Este cometimento está contido em:
foreman
2017-10-26 18:28:20 -04:00
ascendente 687e1fdd9c
cometimento 41082b16ca
2 ficheiros modificados com 91 adições e 1 eliminações
+4 -1
Ver ficheiro
@@ -106,7 +106,10 @@ KHRicdVendorDispatch amd::ICDDispatchedObject::icdVendorDispatch_[] = {
clGetDeviceAndHostTimer,
clGetHostTimer,
clGetKernelSubGroupInfo,
clSetDefaultDeviceCommandQueue}};
clSetDefaultDeviceCommandQueue,
clSetProgramReleaseCallback,
clSetProgramSpecializationConstant }};
#if defined(ATI_OS_WIN)
#include <Shlwapi.h>
+87
Ver ficheiro
@@ -1097,6 +1097,93 @@ RUNTIME_ENTRY(cl_int, clGetProgramBuildInfo,
}
RUNTIME_EXIT
/*! \brief Sets the values of a SPIR-V specialization constants.
*
* \param program must be a valid OpenCL program created from a SPIR-V module.
*
* \param spec id_ identifies the SPIR-V specialization constant whose value will be set.
*
* \param spec_size specifies the size in bytes of the data pointed to by spec_value. This should
* be 1 for boolean constants. For all other constant types this should match the size of the
* specialization constant in the SPIR-V module.
*
* \param spec_value is a pointer to the memory location that contains the value of the
* specialization constant. The data pointed to by \a spec_value are copied and can be safely
* reused by the application after \a clSetProgramSpecializationConstant returns. This
* specialization value will be used by subsequent calls to \a clBuildProgram until another call to
* \a clSetProgramSpecializationConstant changes it. If a specialization constant is a boolean
* constant, _spec value_should be a pointer to a cl_uchar value. A value of zero will set the
* specialization constant to false; any other value will set it to true.
*
* Calling this function multiple times for the same specialization constant shall cause the last
* provided value to override any previously specified value. The values are used by a subsequent
* \a clBuildProgram call for the program.
*
* Application is not required to provide values for every specialization constant contained in
* SPIR-V module. SPIR-V provides default values for all specialization constants.
*
* \return One of the following values:
* - CL_SUCCESS if the function is executed successfully.
* - CL_INVALID_PROGRAM if program is not a valid program object created from a SPIR-V module.
* - CL_INVALID_SPEC_ID if spec_id is not a valid specialization constant ID
* - CL_INVALID_VALUE if spec_size does not match the size of the specialization constant in the
* SPIR-V module, or if spec_value is NULL.
* - CL_OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL
* implementation on the device.
* - CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL
* implementation on the host.
*
* \version 2.2-3
*/
RUNTIME_ENTRY(cl_int, clSetProgramSpecializationConstant,
(cl_program program, cl_uint spec_id, size_t spec_size, const void* spec_value)) {
if (!is_valid(program)) {
return CL_INVALID_PROGRAM;
}
return CL_INVALID_VALUE;
}
RUNTIME_EXIT
/*! \brief registers a user callback function with a program object. Each call to
* \a clSetProgramReleaseCallback registers the specified user callback function on a callback stack
* associated with program. The registered user callback functions are called in the reverse order
* in which they were registered. The user callback functions are called after destructors (if any)
* for program scope global variables (if any) are called and before the program is released.
* This provides a mechanism for the application (and libraries) to be notified when destructors
* are complete.
*
* \param program is a valid program object
*
* \param pfn_notify is the callback function that can be registered by the application. This
* callback function may be called asynchronously by the OpenCL implementation. It is the
* application's responsibility to ensure that the callback function is thread safe. The parameters
* to this callback function are:
* - \a prog is the program object whose destructors are being called. When the user callback is
* called by the implementation, this program object is not longer valid. \a prog is only provided
* for reference purposes.
* - \a user_data is a pointer to user supplied data. \a user_data will be passed as the
* \a user_data argument when pfn_notify is called. user data can be NULL.
*
* \return One of the following values:
* - CL_SUCCESS if the function is executed successfully.
* - CL_INVALID_PROGRAM if program is not a valid program object.
* - CL_INVALID_VALUE if pfn_notify is NULL.
* - CL_OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL
* implementation on the device.
*
* \version 2.2-3
*/
RUNTIME_ENTRY(cl_int, clSetProgramReleaseCallback,
(cl_program program, void (CL_CALLBACK *pfn_notify)(
cl_program program, void *user_data
), void *user_data)) {
if (!is_valid(program)) {
return CL_INVALID_PROGRAM;
}
return CL_INVALID_VALUE;
}
RUNTIME_EXIT
/*! @}
* @}
*