[Beignet] [PATCH 25/57] Implement all platform related API in cl_api_platform_id.c
junyan.he at inbox.com
junyan.he at inbox.com
Sun Jun 11 05:50:11 UTC 2017
From: Junyan He <junyan.he at intel.com>
Signed-off-by: Junyan He <junyan.he at intel.com>
---
runtime/cl_api_platform_id.c | 101 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
create mode 100644 runtime/cl_api_platform_id.c
diff --git a/runtime/cl_api_platform_id.c b/runtime/cl_api_platform_id.c
new file mode 100644
index 0000000..441d40c
--- /dev/null
+++ b/runtime/cl_api_platform_id.c
@@ -0,0 +1,101 @@
+/*
+ * 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/>.
+ *
+ */
+
+#include "cl_platform_id.h"
+#include "CL/cl_ext.h"
+
+cl_int
+clGetPlatformInfo(cl_platform_id platform,
+ cl_platform_info param_name,
+ size_t param_value_size,
+ void *param_value,
+ size_t *param_value_size_ret)
+{
+ const void *src_ptr = NULL;
+ size_t src_size = 0;
+
+ if (!CL_OBJECT_IS_PLATFORM(platform)) {
+ return CL_INVALID_PLATFORM;
+ }
+
+ /* Only one platform now. */
+ if (platform != cl_get_platform_default()) {
+ return CL_INVALID_PLATFORM;
+ }
+
+ if (param_name == CL_PLATFORM_PROFILE) {
+ src_ptr = platform->profile;
+ src_size = platform->profile_sz;
+ } else if (param_name == CL_PLATFORM_VERSION) {
+ src_ptr = platform->version;
+ src_size = platform->version_sz;
+ } else if (param_name == CL_PLATFORM_NAME) {
+ src_ptr = platform->name;
+ src_size = platform->name_sz;
+ } else if (param_name == CL_PLATFORM_VENDOR) {
+ src_ptr = platform->vendor;
+ src_size = platform->vendor_sz;
+ } else if (param_name == CL_PLATFORM_EXTENSIONS) {
+ src_ptr = platform->extensions;
+ src_size = platform->extensions_sz;
+ } else if (param_name == CL_PLATFORM_ICD_SUFFIX_KHR) {
+ src_ptr = platform->icd_suffix_khr;
+ src_size = platform->icd_suffix_khr_sz;
+ } else {
+ return CL_INVALID_VALUE;
+ }
+
+ return cl_get_info_helper(src_ptr, src_size,
+ param_value, param_value_size, param_value_size_ret);
+}
+
+cl_int
+clGetPlatformIDs(cl_uint num_entries,
+ cl_platform_id *platforms,
+ cl_uint *num_platforms)
+{
+ if (platforms == NULL && num_platforms == NULL)
+ return CL_INVALID_VALUE;
+
+ if (num_entries == 0 && platforms != NULL)
+ return CL_INVALID_VALUE;
+
+ return cl_platform_get_ids(num_entries, platforms, num_platforms);
+}
+
+cl_int
+clUnloadCompiler(void)
+{
+ return CL_SUCCESS;
+}
+
+cl_int
+clUnloadPlatformCompiler(cl_platform_id platform)
+{
+ return CL_SUCCESS;
+}
+
+void *
+clGetExtensionFunctionAddressForPlatform(cl_platform_id platform,
+ const char *func_name)
+{
+ if (platform != NULL && platform != cl_get_platform_default())
+ return NULL;
+
+ return cl_platform_get_extension_function_address(func_name);
+}
--
2.7.4
More information about the Beignet
mailing list