[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