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