P4 to Git Change 1454419 by lmoriche@lmoriche_opencl_dev2 on 2017/09/01 11:33:04

SWDEV-1 - Khronos GIT import (08/31/17)

Affected files ...

... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/LICENSE.txt#1 add
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/OpenCL.def.in#13 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/OpenCL.rc#18 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/icd.c#9 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/icd.h#9 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/icd_dispatch.c#30 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/icd_dispatch.h#25 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/icd_exports.map.in#9 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/icd_linux.c#10 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/icd/icd_windows.c#8 edit
... //depot/stg/opencl/drivers/opencl/runtime/runtimedefs#44 edit


[ROCm/clr commit: a89198e6ea]
This commit is contained in:
foreman
2017-09-01 10:46:06 -05:00
parent 11234a1ffd
commit d347b6c0c7
8 changed files with 406 additions and 254 deletions
@@ -0,0 +1,35 @@
Copyright (c) 2016 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software source and associated documentation files (the "Materials"),
to deal in the Materials without restriction, including without limitation
the rights to use, copy, modify, compile, merge, publish, distribute,
sublicense, and/or sell copies of the Materials, and to permit persons to
whom the Materials are furnished to do so, subject the following terms and
conditions:
All modifications to the Materials used to create a binary that is
distributed to third parties shall be provided to Khronos with an
unrestricted license to use for the purposes of implementing bug fixes and
enhancements to the Materials;
If the binary is used as part of an OpenCL(TM) implementation, whether binary
is distributed together with or separately to that implementation, then
recipient must become an OpenCL Adopter and follow the published OpenCL
conformance process for that implementation, details at:
http://www.khronos.org/conformance/;
The above copyright notice, the OpenCL trademark license, and this permission
notice shall be included in all copies or substantial portions of the
Materials.
THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN
THE MATERIALS.
OpenCL is a trademark of Apple Inc. used under license by Khronos.
@@ -1,31 +1,28 @@
/*
* Copyright (c) 2012 The Khronos Group Inc.
* Copyright (c) 2016 The Khronos Group Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software source and associated documentation files (the "Materials"),
* to use, copy, modify and compile the Materials to create a binary under the
* following terms and conditions:
* to deal in the Materials without restriction, including without limitation
* the rights to use, copy, modify, compile, merge, publish, distribute,
* sublicense, and/or sell copies of the Materials, and to permit persons to
* whom the Materials are furnished to do so, subject the following terms and
* conditions:
*
* 1. The Materials shall NOT be distributed to any third party;
*
* 2. The binary may be distributed without restriction, including without
* limitation the rights to use, copy, merge, publish, distribute, sublicense,
* and/or sell copies, and to permit persons to whom the binary is furnished to
* do so;
*
* 3. All modifications to the Materials used to create a binary that is
* All modifications to the Materials used to create a binary that is
* distributed to third parties shall be provided to Khronos with an
* unrestricted license to use for the purposes of implementing bug fixes and
* enhancements to the Materials;
*
* 4. If the binary is used as part of an OpenCL(TM) implementation, whether
* binary is distributed together with or separately to that implementation,
* then recipient must become an OpenCL Adopter and follow the published OpenCL
* If the binary is used as part of an OpenCL(TM) implementation, whether binary
* is distributed together with or separately to that implementation, then
* recipient must become an OpenCL Adopter and follow the published OpenCL
* conformance process for that implementation, details at:
* http://www.khronos.org/conformance/;
*
* 5. The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Materials.
* The above copyright notice, the OpenCL trademark license, and this permission
* notice shall be included in all copies or substantial portions of the
* Materials.
*
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -34,8 +31,8 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN
* THE MATERIALS.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*/
#include <windows.h>
@@ -43,8 +40,8 @@
#ifdef RC_INVOKED
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,0,6,0
PRODUCTVERSION 2,0,6,0
FILEVERSION 2,2,0,0
PRODUCTVERSION 2,2,0,0
FILETYPE VFT_DLL
BEGIN
@@ -54,8 +51,8 @@ BEGIN
BEGIN
VALUE "FileDescription" ,"OpenCL Client DLL"
VALUE "ProductName" ,"Khronos OpenCL ICD"
VALUE "LegalCopyright" ,"Copyright \251 The Khronos Group Inc 2014"
VALUE "FileVersion" ,"2.0.6.0"
VALUE "LegalCopyright" ,"Copyright \251 The Khronos Group Inc 2016"
VALUE "FileVersion" ,"2.2.0.0"
VALUE "CompanyName" ,"Khronos Group"
VALUE "InternalName" ,"OpenCL"
@@ -1,31 +1,28 @@
/*
* Copyright (c) 2012 The Khronos Group Inc.
* Copyright (c) 2016 The Khronos Group Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software source and associated documentation files (the "Materials"),
* to use, copy, modify and compile the Materials to create a binary under the
* following terms and conditions:
* to deal in the Materials without restriction, including without limitation
* the rights to use, copy, modify, compile, merge, publish, distribute,
* sublicense, and/or sell copies of the Materials, and to permit persons to
* whom the Materials are furnished to do so, subject the following terms and
* conditions:
*
* 1. The Materials shall NOT be distributed to any third party;
*
* 2. The binary may be distributed without restriction, including without
* limitation the rights to use, copy, merge, publish, distribute, sublicense,
* and/or sell copies, and to permit persons to whom the binary is furnished to
* do so;
*
* 3. All modifications to the Materials used to create a binary that is
* All modifications to the Materials used to create a binary that is
* distributed to third parties shall be provided to Khronos with an
* unrestricted license to use for the purposes of implementing bug fixes and
* enhancements to the Materials;
*
* 4. If the binary is used as part of an OpenCL(TM) implementation, whether
* binary is distributed together with or separately to that implementation,
* then recipient must become an OpenCL Adopter and follow the published OpenCL
* If the binary is used as part of an OpenCL(TM) implementation, whether binary
* is distributed together with or separately to that implementation, then
* recipient must become an OpenCL Adopter and follow the published OpenCL
* conformance process for that implementation, details at:
* http://www.khronos.org/conformance/;
*
* 5. The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Materials.
* The above copyright notice, the OpenCL trademark license, and this permission
* notice shall be included in all copies or substantial portions of the
* Materials.
*
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -34,8 +31,8 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN
* THE MATERIALS.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*/
#include "icd.h"
@@ -201,6 +198,12 @@ Done:
void khrIcdContextPropertiesGetPlatform(const cl_context_properties *properties, cl_platform_id *outPlatform)
{
if (properties == NULL && khrIcdVendors != NULL)
{
*outPlatform = khrIcdVendors[0].platform;
return;
}
const cl_context_properties *property = (cl_context_properties *)NULL;
*outPlatform = NULL;
for (property = properties; property && property[0]; property += 2)
@@ -1,31 +1,28 @@
/*
* Copyright (c) 2012 The Khronos Group Inc.
* Copyright (c) 2016 The Khronos Group Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software source and associated documentation files (the "Materials"),
* to use, copy, modify and compile the Materials to create a binary under the
* following terms and conditions:
* to deal in the Materials without restriction, including without limitation
* the rights to use, copy, modify, compile, merge, publish, distribute,
* sublicense, and/or sell copies of the Materials, and to permit persons to
* whom the Materials are furnished to do so, subject the following terms and
* conditions:
*
* 1. The Materials shall NOT be distributed to any third party;
*
* 2. The binary may be distributed without restriction, including without
* limitation the rights to use, copy, merge, publish, distribute, sublicense,
* and/or sell copies, and to permit persons to whom the binary is furnished to
* do so;
*
* 3. All modifications to the Materials used to create a binary that is
* All modifications to the Materials used to create a binary that is
* distributed to third parties shall be provided to Khronos with an
* unrestricted license to use for the purposes of implementing bug fixes and
* enhancements to the Materials;
*
* 4. If the binary is used as part of an OpenCL(TM) implementation, whether
* binary is distributed together with or separately to that implementation,
* then recipient must become an OpenCL Adopter and follow the published OpenCL
* If the binary is used as part of an OpenCL(TM) implementation, whether binary
* is distributed together with or separately to that implementation, then
* recipient must become an OpenCL Adopter and follow the published OpenCL
* conformance process for that implementation, details at:
* http://www.khronos.org/conformance/;
*
* 5. The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Materials.
* The above copyright notice, the OpenCL trademark license, and this permission
* notice shall be included in all copies or substantial portions of the
* Materials.
*
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -34,8 +31,8 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN
* THE MATERIALS.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*/
#ifndef _ICD_H_
@@ -56,69 +53,6 @@
#include <CL/cl.h>
#include <CL/cl_ext.h>
#include "icd_dispatch.h"
/*
*
* vendor dispatch table structure
*
*/
struct _cl_object
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_platform_id
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_device_id
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_context
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_command_queue
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_mem
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_program
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_kernel
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_event
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_sampler
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_counter
{
KHRicdVendorDispatch *dispatch;
};
/*
* type definitions
*/
@@ -225,16 +159,6 @@ void khrIcdContextPropertiesGetPlatform(
#define KHR_ICD_ASSERT(x)
#endif
// if handle is NULL then return
#define KHR_ICD_VALIDATE_HANDLE(handle) \
do \
{ \
if (!handle) \
{ \
return; \
} \
} while (0)
// if handle is NULL then return invalid_handle_error_code
#define KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(handle,invalid_handle_error_code) \
do \
@@ -1,31 +1,28 @@
/*
* Copyright (c) 2012 The Khronos Group Inc.
* Copyright (c) 2016 The Khronos Group Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software source and associated documentation files (the "Materials"),
* to use, copy, modify and compile the Materials to create a binary under the
* following terms and conditions:
* to deal in the Materials without restriction, including without limitation
* the rights to use, copy, modify, compile, merge, publish, distribute,
* sublicense, and/or sell copies of the Materials, and to permit persons to
* whom the Materials are furnished to do so, subject the following terms and
* conditions:
*
* 1. The Materials shall NOT be distributed to any third party;
*
* 2. The binary may be distributed without restriction, including without
* limitation the rights to use, copy, merge, publish, distribute, sublicense,
* and/or sell copies, and to permit persons to whom the binary is furnished to
* do so;
*
* 3. All modifications to the Materials used to create a binary that is
* All modifications to the Materials used to create a binary that is
* distributed to third parties shall be provided to Khronos with an
* unrestricted license to use for the purposes of implementing bug fixes and
* enhancements to the Materials;
*
* 4. If the binary is used as part of an OpenCL(TM) implementation, whether
* binary is distributed together with or separately to that implementation,
* then recipient must become an OpenCL Adopter and follow the published OpenCL
* If the binary is used as part of an OpenCL(TM) implementation, whether binary
* is distributed together with or separately to that implementation, then
* recipient must become an OpenCL Adopter and follow the published OpenCL
* conformance process for that implementation, details at:
* http://www.khronos.org/conformance/;
*
* 5. The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Materials.
* The above copyright notice, the OpenCL trademark license, and this permission
* notice shall be included in all copies or substantial portions of the
* Materials.
*
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -34,8 +31,8 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN
* THE MATERIALS.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*/
#include "icd_dispatch.h"
@@ -150,8 +147,8 @@ clGetDeviceInfo(
CL_API_ENTRY cl_int CL_API_CALL
clCreateSubDevices(cl_device_id in_device,
const cl_device_partition_property * properties,
cl_uint num_entries,
cl_device_id * out_devices,
cl_uint num_entries,
cl_device_id * out_devices,
cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2
{
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(in_device, CL_INVALID_DEVICE);
@@ -169,7 +166,7 @@ clRetainDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE);
return device->dispatch->clRetainDevice(device);
}
CL_API_ENTRY cl_int CL_API_CALL
clReleaseDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2
{
@@ -325,10 +322,10 @@ clCreateBuffer(cl_context context,
CL_API_ENTRY cl_mem CL_API_CALL
clCreateImage(cl_context context,
cl_mem_flags flags,
const cl_image_format * image_format,
cl_mem_flags flags,
const cl_image_format * image_format,
const cl_image_desc * image_desc,
void * host_ptr,
void * host_ptr,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2
{
KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT);
@@ -340,7 +337,7 @@ clCreateImage(cl_context context,
host_ptr,
errcode_ret);
}
CL_API_ENTRY cl_int CL_API_CALL
clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0
{
@@ -586,6 +583,32 @@ clLinkProgram(cl_context context,
errcode_ret);
}
CL_API_ENTRY cl_int CL_API_CALL
clSetProgramSpecializationConstant(cl_program program,
cl_uint spec_id,
size_t spec_size,
const void* spec_value) CL_API_SUFFIX__VERSION_2_2
{
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM);
return program->dispatch->clSetProgramSpecializationConstant(
program,
spec_id,
spec_size,
spec_value);
}
CL_API_ENTRY cl_int CL_API_CALL
clSetProgramReleaseCallback(cl_program program,
void (CL_CALLBACK * pfn_notify)(cl_program program, void * user_data),
void * user_data) CL_API_SUFFIX__VERSION_2_2
{
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM);
return program->dispatch->clSetProgramReleaseCallback(
program,
pfn_notify,
user_data);
}
CL_API_ENTRY cl_int CL_API_CALL
clUnloadPlatformCompiler(cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2
{
@@ -979,7 +1002,7 @@ clEnqueueCopyBuffer(cl_command_queue command_queue,
event_wait_list,
event);
}
CL_API_ENTRY cl_int CL_API_CALL
clEnqueueCopyBufferRect(
cl_command_queue command_queue,
@@ -1417,8 +1440,6 @@ clGetExtensionFunctionAddressForPlatform(cl_platform_id platform,
/* cl_khr_sub_groups */
CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetKernelSubGroupInfoKHR);
CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clTerminateContextKHR);
// fall back to vendor extension detection
// FIXME Now that we have a platform id here, we need to validate that it isn't NULL, so shouldn't we have an errcode_ret
@@ -1433,7 +1454,7 @@ CL_API_ENTRY cl_int CL_API_CALL
clSetCommandQueueProperty(cl_command_queue command_queue,
cl_command_queue_properties properties,
cl_bool enable,
cl_command_queue_properties * old_properties) /*CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED*/
cl_command_queue_properties * old_properties) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED
{
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE);
return command_queue->dispatch->clSetCommandQueueProperty(
@@ -1625,11 +1646,6 @@ clGetExtensionFunctionAddress(const char *function_name) CL_EXT_SUFFIX__VERSION_
/* cl_khr_sub_groups */
CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetKernelSubGroupInfoKHR);
CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clTerminateContextKHR);
/* cl_khr_il_program */
CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateProgramWithILKHR);
// fall back to vendor extension detection
for (vendor = khrIcdVendors; vendor; vendor = vendor->next)
{
@@ -2141,7 +2157,7 @@ clEnqueueReleaseDX9MediaSurfacesKHR(
mem_objects,
num_events_in_wait_list,
event_wait_list,
event);
event);
}
#endif
@@ -2545,34 +2561,114 @@ clGetKernelSubGroupInfoKHR(
}
CL_API_ENTRY cl_int CL_API_CALL
clTerminateContextKHR(
cl_context context) CL_API_SUFFIX__VERSION_2_0
clSetDefaultDeviceCommandQueue(
cl_context context,
cl_device_id device,
cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1
{
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT);
return context->dispatch->clTerminateContextKHR(context);
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE);
return context->dispatch->clSetDefaultDeviceCommandQueue(
context,
device,
command_queue);
}
CL_API_ENTRY cl_program CL_API_CALL
clCreateProgramWithILKHR(cl_context context,
const void * il,
size_t length,
cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_2
clCreateProgramWithIL(
cl_context context,
const void * il,
size_t length,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_1
{
KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT);
return context->dispatch->clCreateProgramWithIL(context, il, length,
errcode_ret);
return context->dispatch->clCreateProgramWithIL(
context,
il,
length,
errcode_ret);
}
//ToDo: change CL_API_SUFFIX__VERSION_2_0 to CL_API_SUFFIX__VERSION_2_1
// after switching to OpenCL 2.1
CL_API_ENTRY cl_program CL_API_CALL
clCreateProgramWithIL(cl_context context,
const void * il,
size_t length,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0
CL_API_ENTRY cl_int CL_API_CALL
clGetKernelSubGroupInfo(
cl_kernel kernel,
cl_device_id device,
cl_kernel_sub_group_info param_name,
size_t input_value_size,
const void * input_value,
size_t param_value_size,
void * param_value,
size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_1
{
KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT);
return context->dispatch->clCreateProgramWithIL(context, il, length,
errcode_ret);
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL);
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE);
return kernel->dispatch->clGetKernelSubGroupInfo(
kernel,
device,
param_name,
input_value_size,
input_value,
param_value_size,
param_value,
param_value_size_ret);
}
CL_API_ENTRY cl_kernel CL_API_CALL
clCloneKernel(
cl_kernel source_kernel,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_1
{
KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(source_kernel, CL_INVALID_KERNEL);
return source_kernel->dispatch->clCloneKernel(
source_kernel,
errcode_ret);
}
CL_API_ENTRY cl_int CL_API_CALL
clEnqueueSVMMigrateMem(
cl_command_queue command_queue,
cl_uint num_svm_pointers,
const void ** svm_pointers,
const size_t * sizes,
cl_mem_migration_flags flags,
cl_uint num_events_in_wait_list,
const cl_event * event_wait_list,
cl_event * event) CL_API_SUFFIX__VERSION_2_1
{
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE);
return command_queue->dispatch->clEnqueueSVMMigrateMem(
command_queue,
num_svm_pointers,
svm_pointers,
sizes,
flags,
num_events_in_wait_list,
event_wait_list,
event);
}
CL_API_ENTRY cl_int CL_API_CALL
clGetDeviceAndHostTimer(
cl_device_id device,
cl_ulong * device_timestamp,
cl_ulong * host_timestamp) CL_API_SUFFIX__VERSION_2_1
{
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE);
return device->dispatch->clGetDeviceAndHostTimer(
device,
device_timestamp,
host_timestamp);
}
CL_API_ENTRY cl_int CL_API_CALL
clGetHostTimer(
cl_device_id device,
cl_ulong * host_timestamp) CL_API_SUFFIX__VERSION_2_1
{
KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE);
return device->dispatch->clGetHostTimer(
device,
host_timestamp);
}
@@ -1,31 +1,28 @@
/*
* Copyright (c) 2012 The Khronos Group Inc.
* Copyright (c) 2016 The Khronos Group Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software source and associated documentation files (the "Materials"),
* to use, copy, modify and compile the Materials to create a binary under the
* following terms and conditions:
* to deal in the Materials without restriction, including without limitation
* the rights to use, copy, modify, compile, merge, publish, distribute,
* sublicense, and/or sell copies of the Materials, and to permit persons to
* whom the Materials are furnished to do so, subject the following terms and
* conditions:
*
* 1. The Materials shall NOT be distributed to any third party;
*
* 2. The binary may be distributed without restriction, including without
* limitation the rights to use, copy, merge, publish, distribute, sublicense,
* and/or sell copies, and to permit persons to whom the binary is furnished to
* do so;
*
* 3. All modifications to the Materials used to create a binary that is
* All modifications to the Materials used to create a binary that is
* distributed to third parties shall be provided to Khronos with an
* unrestricted license to use for the purposes of implementing bug fixes and
* enhancements to the Materials;
*
* 4. If the binary is used as part of an OpenCL(TM) implementation, whether
* binary is distributed together with or separately to that implementation,
* then recipient must become an OpenCL Adopter and follow the published OpenCL
* If the binary is used as part of an OpenCL(TM) implementation, whether binary
* is distributed together with or separately to that implementation, then
* recipient must become an OpenCL Adopter and follow the published OpenCL
* conformance process for that implementation, details at:
* http://www.khronos.org/conformance/;
*
* 5. The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Materials.
* The above copyright notice, the OpenCL trademark license, and this permission
* notice shall be included in all copies or substantial portions of the
* Materials.
*
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -34,8 +31,8 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN
* THE MATERIALS.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*/
#ifndef _ICD_DISPATCH_H_
@@ -53,6 +50,10 @@
#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
#endif
#ifndef CL_USE_DEPRECATED_OPENCL_2_0_APIS
#define CL_USE_DEPRECATED_OPENCL_2_0_APIS
#endif
// cl.h
#include <CL/cl.h>
@@ -276,14 +277,6 @@ typedef CL_API_ENTRY cl_program (CL_API_CALL *KHRpfn_clCreateProgramWithSource)(
const size_t * lengths,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
//ToDo: Change CL_API_SUFFIX__VERSION_2_0 to CL_API_SUFFIX__VERSION_2_1
// after switching to OpenCL 2.1.
typedef CL_API_ENTRY cl_program (CL_API_CALL *KHRpfn_clCreateProgramWithIL)(
cl_context context,
const void * il,
size_t length,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0;
typedef CL_API_ENTRY cl_program (CL_API_CALL *KHRpfn_clCreateProgramWithBinary)(
cl_context context,
cl_uint num_devices,
@@ -334,6 +327,17 @@ typedef CL_API_ENTRY cl_program (CL_API_CALL *KHRpfn_clLinkProgram)(
void * user_data,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clSetProgramSpecializationConstant)(
cl_program program,
cl_uint spec_id,
size_t spec_size,
const void* spec_value) CL_API_SUFFIX__VERSION_2_2;
typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clSetProgramReleaseCallback)(
cl_program program,
void (CL_CALLBACK * pfn_notify)(cl_program program, void * user_data),
void * user_data) CL_API_SUFFIX__VERSION_2_2;
typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clUnloadPlatformCompiler)(
cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2;
@@ -754,7 +758,7 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clSetCommandQueueProperty)(
cl_command_queue command_queue,
cl_command_queue_properties properties,
cl_bool enable,
cl_command_queue_properties * old_properties) /*CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED*/;
cl_command_queue_properties * old_properties) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED;
typedef CL_API_ENTRY cl_mem (CL_API_CALL *KHRpfn_clCreateImage2D)(
cl_context context,
@@ -1050,7 +1054,7 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clEnqueueReleaseDX9MediaSurface
cl_command_queue command_queue,
cl_uint num_objects,
const cl_mem * mem_objects,
cl_uint num_events_in_wait_list,
cl_uint num_events_in_wait_list,
const cl_event * event_wait_list,
cl_event * event) CL_API_SUFFIX__VERSION_1_2;
@@ -1244,9 +1248,49 @@ typedef CL_API_ENTRY cl_event (CL_API_CALL *KHRpfn_clCreateEventFromEGLSyncKHR)(
CLeglDisplayKHR display,
cl_int *errcode_ret);
typedef CL_API_ENTRY cl_int (CL_API_CALL * KHRpfn_clTerminateContextKHR)(
cl_context context) CL_API_SUFFIX__VERSION_2_0;
typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clSetDefaultDeviceCommandQueue)(
cl_context context,
cl_device_id device,
cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1;
typedef CL_API_ENTRY cl_program (CL_API_CALL *KHRpfn_clCreateProgramWithIL)(
cl_context context,
const void * il,
size_t length,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_1;
typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clGetKernelSubGroupInfo )(
cl_kernel kernel,
cl_device_id device,
cl_kernel_sub_group_info param_name,
size_t input_value_size,
const void * input_value,
size_t param_value_size,
void * param_value,
size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_1;
typedef CL_API_ENTRY cl_kernel (CL_API_CALL *KHRpfn_clCloneKernel)(
cl_kernel source_kernel,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_1;
typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clEnqueueSVMMigrateMem)(
cl_command_queue command_queue,
cl_uint num_svm_pointers,
const void ** svm_pointers,
const size_t * sizes,
cl_mem_migration_flags flags,
cl_uint num_events_in_wait_list,
const cl_event * event_wait_list,
cl_event * event) CL_API_SUFFIX__VERSION_2_1;
typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clGetDeviceAndHostTimer)(
cl_device_id device,
cl_ulong * device_timestamp,
cl_ulong * host_timestamp) CL_API_SUFFIX__VERSION_2_1;
typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clGetHostTimer)(
cl_device_id device,
cl_ulong * host_timestamp) CL_API_SUFFIX__VERSION_2_1;
/*
*
@@ -1422,10 +1466,69 @@ struct KHRicdVendorDispatchRec
/* cl_khr_sub_groups */
KHRpfn_clGetKernelSubGroupInfoKHR clGetKernelSubGroupInfoKHR;
KHRpfn_clTerminateContextKHR clTerminateContextKHR;
/* OpenCL 2.1 */
KHRpfn_clCloneKernel clCloneKernel;
KHRpfn_clCreateProgramWithIL clCreateProgramWithIL;
KHRpfn_clEnqueueSVMMigrateMem clEnqueueSVMMigrateMem;
KHRpfn_clGetDeviceAndHostTimer clGetDeviceAndHostTimer;
KHRpfn_clGetHostTimer clGetHostTimer;
KHRpfn_clGetKernelSubGroupInfo clGetKernelSubGroupInfo;
KHRpfn_clSetDefaultDeviceCommandQueue clSetDefaultDeviceCommandQueue;
/* OpenCL 2.2 */
KHRpfn_clSetProgramReleaseCallback clSetProgramReleaseCallback;
KHRpfn_clSetProgramSpecializationConstant clSetProgramSpecializationConstant;
};
/*
*
* vendor dispatch table structure
*
*/
struct _cl_platform_id
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_device_id
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_context
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_command_queue
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_mem
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_program
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_kernel
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_event
{
KHRicdVendorDispatch *dispatch;
};
struct _cl_sampler
{
KHRicdVendorDispatch *dispatch;
};
#endif // _ICD_DISPATCH_H_
@@ -1,31 +1,28 @@
/*
* Copyright (c) 2012 The Khronos Group Inc.
* Copyright (c) 2016 The Khronos Group Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software source and associated documentation files (the "Materials"),
* to use, copy, modify and compile the Materials to create a binary under the
* following terms and conditions:
* to deal in the Materials without restriction, including without limitation
* the rights to use, copy, modify, compile, merge, publish, distribute,
* sublicense, and/or sell copies of the Materials, and to permit persons to
* whom the Materials are furnished to do so, subject the following terms and
* conditions:
*
* 1. The Materials shall NOT be distributed to any third party;
*
* 2. The binary may be distributed without restriction, including without
* limitation the rights to use, copy, merge, publish, distribute, sublicense,
* and/or sell copies, and to permit persons to whom the binary is furnished to
* do so;
*
* 3. All modifications to the Materials used to create a binary that is
* All modifications to the Materials used to create a binary that is
* distributed to third parties shall be provided to Khronos with an
* unrestricted license to use for the purposes of implementing bug fixes and
* enhancements to the Materials;
*
* 4. If the binary is used as part of an OpenCL(TM) implementation, whether
* binary is distributed together with or separately to that implementation,
* then recipient must become an OpenCL Adopter and follow the published OpenCL
* If the binary is used as part of an OpenCL(TM) implementation, whether binary
* is distributed together with or separately to that implementation, then
* recipient must become an OpenCL Adopter and follow the published OpenCL
* conformance process for that implementation, details at:
* http://www.khronos.org/conformance/;
*
* 5. The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Materials.
* The above copyright notice, the OpenCL trademark license, and this permission
* notice shall be included in all copies or substantial portions of the
* Materials.
*
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -34,8 +31,8 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN
* THE MATERIALS.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*/
#include "icd.h"
@@ -1,31 +1,28 @@
/*
* Copyright (c) 2012 The Khronos Group Inc.
* Copyright (c) 2016 The Khronos Group Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software source and associated documentation files (the "Materials"),
* to use, copy, modify and compile the Materials to create a binary under the
* following terms and conditions:
* to deal in the Materials without restriction, including without limitation
* the rights to use, copy, modify, compile, merge, publish, distribute,
* sublicense, and/or sell copies of the Materials, and to permit persons to
* whom the Materials are furnished to do so, subject the following terms and
* conditions:
*
* 1. The Materials shall NOT be distributed to any third party;
*
* 2. The binary may be distributed without restriction, including without
* limitation the rights to use, copy, merge, publish, distribute, sublicense,
* and/or sell copies, and to permit persons to whom the binary is furnished to
* do so;
*
* 3. All modifications to the Materials used to create a binary that is
* All modifications to the Materials used to create a binary that is
* distributed to third parties shall be provided to Khronos with an
* unrestricted license to use for the purposes of implementing bug fixes and
* enhancements to the Materials;
*
* 4. If the binary is used as part of an OpenCL(TM) implementation, whether
* binary is distributed together with or separately to that implementation,
* then recipient must become an OpenCL Adopter and follow the published OpenCL
* If the binary is used as part of an OpenCL(TM) implementation, whether binary
* is distributed together with or separately to that implementation, then
* recipient must become an OpenCL Adopter and follow the published OpenCL
* conformance process for that implementation, details at:
* http://www.khronos.org/conformance/;
*
* 5. The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Materials.
* The above copyright notice, the OpenCL trademark license, and this permission
* notice shall be included in all copies or substantial portions of the
* Materials.
*
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -34,8 +31,8 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN
* THE MATERIALS.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*
* OpenCL is a trademark of Apple Inc. used under license by Khronos.
*/
#include "icd.h"
@@ -131,7 +128,7 @@ void khrIcdOsVendorsEnumerateOnce()
{
InitOnceExecuteOnce(&initialized, khrIcdOsVendorsEnumerate, NULL, NULL);
}
/*
*
* Dynamic library loading functions