xref: /aosp_15_r20/external/OpenCL-ICD-Loader/test/pkgconfig/pkgconfig.c (revision 1cddb830dba8aa7c1cc1039338e56b3b9fa24952)
1 #ifdef __APPLE__ //Mac OSX has a different name for the header file
2 #include <OpenCL/opencl.h>
3 #else
4 #include <CL/opencl.h>
5 #endif
6 
7 #include <stdio.h>  // printf
8 #include <stdlib.h> // malloc
9 #include <stdint.h> // UINTMAX_MAX
10 
checkErr(cl_int err,const char * name)11 void checkErr(cl_int err, const char * name)
12 {
13     if (err != CL_SUCCESS)
14     {
15         printf("ERROR: %s (%i)\n", name, err);
16         exit( err );
17     }
18 }
19 
main()20 int main()
21 {
22     cl_int CL_err = CL_SUCCESS;
23     cl_uint numPlatforms = 0;
24 
25     CL_err = clGetPlatformIDs(0, NULL, &numPlatforms);
26     checkErr(CL_err, "clGetPlatformIDs(numPlatforms)");
27 
28     if (numPlatforms == 0)
29     {
30         printf("No OpenCL platform detected.\n");
31         exit( -1 );
32     }
33     printf("Found %u platform(s)\n\n", numPlatforms);
34     fflush(NULL);
35 
36     cl_platform_id* platforms = (cl_platform_id*)malloc(numPlatforms * sizeof(cl_platform_id));
37     CL_err = clGetPlatformIDs(numPlatforms, platforms, NULL);
38     checkErr(CL_err, "clGetPlatformIDs(platforms)");
39 
40     for (cl_uint i = 0; i < numPlatforms; ++i)
41     {
42         size_t vendor_length;
43         CL_err = clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, 0, NULL, &vendor_length);
44         checkErr(CL_err, "clGetPlatformInfo(CL_PLATFORM_VENDOR, NULL, &vendor_length)");
45 
46         char* platform_name = (char*)malloc(vendor_length * sizeof(char));
47         CL_err = clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, vendor_length, platform_name, NULL);
48         checkErr(CL_err, "clGetPlatformInfo(CL_PLATFORM_VENDOR, vendor_length, platform_name)");
49 
50         printf("%s\n", platform_name);
51         fflush(NULL);
52         free(platform_name);
53     }
54 
55     return 0;
56 }
57