From: Junyan He <junyan...@intel.com> We define intel_platform the default and only one platform id for runtime. We only support intel platform in beignet.
Signed-off-by: Junyan He <junyan...@intel.com> --- runtime/cl_platform_id.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++ runtime/cl_platform_id.h | 82 ++++++++++++++++++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 runtime/cl_platform_id.c create mode 100644 runtime/cl_platform_id.h diff --git a/runtime/cl_platform_id.c b/runtime/cl_platform_id.c new file mode 100644 index 0000000..f52b7fa --- /dev/null +++ b/runtime/cl_platform_id.c @@ -0,0 +1,113 @@ +/* + * Copyright © 2012 Intel Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Benjamin Segovia <benjamin.sego...@intel.com> + */ + +#include "cl_platform_id.h" +#include "cl_alloc.h" +#include "cl_utils.h" +#include "CL/cl.h" +#include "CL/cl_ext.h" + +#include <stdlib.h> +#include <string.h> + +#define DECL_INFO_STRING(FIELD, STRING) \ + .FIELD = STRING, \ + .JOIN(FIELD, _sz) = sizeof(STRING), + +static struct _cl_platform_id intel_platform_data = { + DECL_INFO_STRING(profile, "FULL_PROFILE") + DECL_INFO_STRING(version, GEN9_LIBCL_VERSION_STRING) + DECL_INFO_STRING(name, "Intel Gen OCL Driver") + DECL_INFO_STRING(vendor, "Intel") + DECL_INFO_STRING(icd_suffix_khr, "Intel")}; + +#undef DECL_INFO_STRING + +/* Intel platform. + It is used as default when the API's platform ptr is NULL */ +static cl_platform_id intel_platform = NULL; + +LOCAL cl_platform_id +cl_get_platform_default(void) +{ + if (intel_platform) + return intel_platform; + + CL_ALLOC_DEBUG_INIT(); + + intel_platform = &intel_platform_data; + CL_OBJECT_INIT_BASE(intel_platform, CL_OBJECT_PLATFORM_MAGIC); + cl_intel_platform_extension_init(intel_platform); + return intel_platform; +} + +LOCAL cl_int +cl_platform_get_ids(cl_uint num_entries, + cl_platform_id *platforms, + cl_uint *num_platforms) +{ + if (num_platforms != NULL) + *num_platforms = 1; + + /* Easy right now, only one platform is supported */ + if (platforms) + *platforms = cl_get_platform_default(); + + return CL_SUCCESS; +} + +#define EXTFUNC(x) \ + if (strcmp(#x, func_name) == 0) \ + return (void *)x; + +LOCAL void * +cl_platform_get_extension_function_address(const char *func_name) +{ + if (func_name == NULL) + return NULL; + +#ifdef HAS_OCLIcd + /* cl_khr_icd */ + EXTFUNC(clIcdGetPlatformIDsKHR) +#endif + EXTFUNC(clGetKernelSubGroupInfoKHR) + + /* + EXTFUNC(clCreateProgramWithLLVMIntel) + EXTFUNC(clGetGenVersionIntel) + EXTFUNC(clMapBufferIntel) + EXTFUNC(clUnmapBufferIntel) + EXTFUNC(clMapBufferGTTIntel) + EXTFUNC(clUnmapBufferGTTIntel) + EXTFUNC(clPinBufferIntel) + EXTFUNC(clUnpinBufferIntel) + EXTFUNC(clReportUnfreedIntel) + EXTFUNC(clCreateBufferFromLibvaIntel) + EXTFUNC(clCreateImageFromLibvaIntel) + EXTFUNC(clGetMemObjectFdIntel) + EXTFUNC(clCreateBufferFromFdINTEL) + EXTFUNC(clCreateImageFromFdINTEL) + EXTFUNC(clCreateAcceleratorINTEL) + EXTFUNC(clRetainAcceleratorINTEL) + EXTFUNC(clReleaseAcceleratorINTEL) + EXTFUNC(clGetAcceleratorInfoINTEL) +*/ + + return NULL; +} diff --git a/runtime/cl_platform_id.h b/runtime/cl_platform_id.h new file mode 100644 index 0000000..597fbef --- /dev/null +++ b/runtime/cl_platform_id.h @@ -0,0 +1,82 @@ +/* + * Copyright © 2012 Intel Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Benjamin Segovia <benjamin.sego...@intel.com> + */ + +#ifndef __CL_PLATFORM_ID_H__ +#define __CL_PLATFORM_ID_H__ + +#include "CL/cl.h" +#include "cl_extensions.h" +#include "cl_base_object.h" +#include "git_sha1.h" +#include "OCLConfig.h" + +struct _cl_platform_id { + _cl_base_object base; + const char *profile; + const char *version; + const char *name; + const char *vendor; + char *extensions; + const char *icd_suffix_khr; + size_t profile_sz; + size_t version_sz; + size_t name_sz; + size_t vendor_sz; + size_t extensions_sz; + size_t icd_suffix_khr_sz; + struct cl_extensions *internal_extensions; +}; + +#define CL_OBJECT_PLATFORM_MAGIC 0xaacdbb00123ccd85LL +#define CL_OBJECT_IS_PLATFORM(obj) ((obj && \ + ((cl_base_object)obj)->magic == CL_OBJECT_PLATFORM_MAGIC && \ + CL_OBJECT_GET_REF(obj) >= 1)) + +/* Return the default platform */ +extern cl_platform_id cl_get_platform_default(void); + +/* Return the valid platform */ +extern cl_int cl_platform_get_ids(cl_uint num_entries, cl_platform_id *platforms, cl_uint *num_platforms); +extern void *cl_platform_get_extension_function_address(const char *func_name); + +#define _STR(x) #x +#define _JOINT(x, y) \ + _STR(x) \ + "." _STR(y) +#define _JOINT3(x, y, z) \ + _STR(x) \ + "." _STR(y) "." _STR(z) + +#ifdef BEIGNET_GIT_SHA1 +#define BEIGNET_GIT_SHA1_STRING " (" BEIGNET_GIT_SHA1 ")" +#else +#define BEIGNET_GIT_SHA1_STRING +#endif + +#ifdef LIBCL_DRIVER_VERSION_PATCH +#define LIBCL_DRIVER_VERSION_STRING _JOINT3(LIBCL_DRIVER_VERSION_MAJOR, LIBCL_DRIVER_VERSION_MINOR, LIBCL_DRIVER_VERSION_PATCH) +#else +#define LIBCL_DRIVER_VERSION_STRING _JOINT(LIBCL_DRIVER_VERSION_MAJOR, LIBCL_DRIVER_VERSION_MINOR) +#endif +#define GEN9_LIBCL_VERSION_STRING "OpenCL " _JOINT(LIBCL_C_VERSION_MAJOR, LIBCL_C_VERSION_MINOR) " beignet " LIBCL_DRIVER_VERSION_STRING BEIGNET_GIT_SHA1_STRING +#define GEN9_LIBCL_C_VERSION_STRING "OpenCL C " _JOINT(LIBCL_C_VERSION_MAJOR, LIBCL_C_VERSION_MINOR) " beignet " LIBCL_DRIVER_VERSION_STRING BEIGNET_GIT_SHA1_STRING +#define NONGEN9_LIBCL_VERSION_STRING "OpenCL 1.2 beignet " LIBCL_DRIVER_VERSION_STRING BEIGNET_GIT_SHA1_STRING +#define NONGEN9_LIBCL_C_VERSION_STRING "OpenCL C 1.2 beignet " LIBCL_DRIVER_VERSION_STRING BEIGNET_GIT_SHA1_STRING + +#endif /* __CL_PLATFORM_ID_H__ */ -- 2.7.4 _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/beignet