xref: /aosp_15_r20/external/OpenCL-ICD-Loader/test/loader_test/test_clgl.c (revision 1cddb830dba8aa7c1cc1039338e56b3b9fa24952)
1 #define CL_USE_DEPRECATED_OPENCL_1_0_APIS
2 #define CL_USE_DEPRECATED_OPENCL_1_1_APIS
3 
4 #include <CL/cl.h>
5 #include <CL/cl_gl.h>
6 #include "param_struct.h"
7 #include <platform/icd_test_log.h>
8 
9 extern cl_context context;
10 extern cl_mem buffer;
11 extern cl_command_queue command_queue;
12 extern cl_event event;
13 extern cl_context_properties context_properties[3];
14 
15 struct clCreateFromGLBuffer_st clCreateFromGLBufferData[NUM_ITEMS_clCreateFromGLBuffer] = {
16 	{NULL, 0x0, 0, NULL}
17 };
18 
test_clCreateFromGLBuffer(const struct clCreateFromGLBuffer_st * data)19 int test_clCreateFromGLBuffer(const struct clCreateFromGLBuffer_st* data)
20 {
21     cl_mem ret_mem;
22 
23     test_icd_app_log("clCreateFromGLBuffer(%p, %x, %u, %p)\n",
24                      context,
25                      data->flags,
26                      data->bufobj,
27                      data->errcode_ret);
28 
29     ret_mem = clCreateFromGLBuffer(context,
30                                    data->flags,
31                                    data->bufobj,
32                                    data->errcode_ret);
33 
34     test_icd_app_log("Value returned: %p\n", ret_mem);
35 
36     return 0;
37 }
38 
39 struct clCreateFromGLTexture_st clCreateFromGLTextureData[NUM_ITEMS_clCreateFromGLTexture] = {
40     {NULL, 0x0, 0, 0, 0, NULL}
41 };
42 
test_clCreateFromGLTexture(const struct clCreateFromGLTexture_st * data)43 int test_clCreateFromGLTexture(const struct clCreateFromGLTexture_st* data)
44 {
45     cl_mem ret_mem;
46 
47     test_icd_app_log("clCreateFromGLTexture(%p, %x, %d, %d, %u, %p)\n",
48                      context,
49                      data->flags,
50                      data->texture_target,
51                      data->miplevel,
52                      data->texture,
53                      data->errcode_ret);
54 
55     ret_mem = clCreateFromGLTexture(context,
56                                     data->flags,
57                                     data->texture_target,
58                                     data->miplevel,
59                                     data->texture,
60                                     data->errcode_ret);
61 
62     test_icd_app_log("Value returned: %p\n", ret_mem);
63 
64     return 0;
65 }
66 
67 struct clCreateFromGLTexture2D_st clCreateFromGLTexture2DData[NUM_ITEMS_clCreateFromGLTexture2D] = {
68     {NULL, 0x0, 0, 0, 0, NULL}
69 };
70 
test_clCreateFromGLTexture2D(const struct clCreateFromGLTexture2D_st * data)71 int test_clCreateFromGLTexture2D(const struct clCreateFromGLTexture2D_st* data)
72 {
73     cl_mem ret_mem;
74 
75     test_icd_app_log("clCreateFromGLTexture2D(%p, %x, %d, %d, %u, %p)\n",
76                      context,
77                      data->flags,
78                      data->texture_target,
79                      data->miplevel,
80                      data->texture,
81                      data->errcode_ret);
82 
83     ret_mem = clCreateFromGLTexture2D(context,
84                                       data->flags,
85                                       data->texture_target,
86                                       data->miplevel,
87                                       data->texture,
88                                       data->errcode_ret);
89 
90     test_icd_app_log("Value returned: %p\n", ret_mem);
91 
92     return 0;
93 }
94 
95 struct clCreateFromGLTexture3D_st clCreateFromGLTexture3DData[NUM_ITEMS_clCreateFromGLTexture3D] = {
96     {NULL, 0, 0, 0, 0, NULL}
97 };
98 
test_clCreateFromGLTexture3D(const struct clCreateFromGLTexture3D_st * data)99 int test_clCreateFromGLTexture3D(const struct clCreateFromGLTexture3D_st* data)
100 {
101     cl_mem ret_mem;
102 
103     test_icd_app_log("clCreateFromGLTexture3D(%p, %x, %d, %d, %u, %p)\n",
104                      context,
105                      data->flags,
106                      data->texture_target,
107                      data->miplevel,
108                      data->texture,
109                      data->errcode_ret);
110 
111     ret_mem = clCreateFromGLTexture3D(context,
112                                       data->flags,
113                                       data->texture_target,
114                                       data->miplevel,
115                                       data->texture,
116                                       data->errcode_ret);
117 
118     test_icd_app_log("Value returned: %p\n", ret_mem);
119 
120      return 0;
121 }
122 
123 struct clCreateFromGLRenderbuffer_st clCreateFromGLRenderbufferData[NUM_ITEMS_clCreateFromGLRenderbuffer] = {
124     {NULL, 0x0, 0, NULL}
125 };
126 
test_clCreateFromGLRenderbuffer(const struct clCreateFromGLRenderbuffer_st * data)127 int test_clCreateFromGLRenderbuffer(const struct clCreateFromGLRenderbuffer_st* data)
128 {
129     cl_mem ret_mem;
130 
131     test_icd_app_log("clCreateFromGLRenderbuffer(%p, %x, %d, %p)\n",
132                      context,
133                      data->flags,
134                      data->renderbuffer,
135                      data->errcode_ret);
136 
137     ret_mem = clCreateFromGLRenderbuffer(context,
138                                          data->flags,
139                                          data->renderbuffer,
140                                          data->errcode_ret);
141 
142     test_icd_app_log("Value returned: %p\n", ret_mem);
143 
144     return 0;
145 }
146 
147 struct clGetGLObjectInfo_st clGetGLObjectInfoData[NUM_ITEMS_clGetGLObjectInfo] = {
148     {NULL, NULL, NULL}
149 };
150 
test_clGetGLObjectInfo(const struct clGetGLObjectInfo_st * data)151 int test_clGetGLObjectInfo(const struct clGetGLObjectInfo_st* data)
152 {
153     cl_int ret_val;
154 
155     test_icd_app_log("clGetGLObjectInfo(%p, %p, %p)\n",
156                      buffer,
157                      data->gl_object_type,
158                      data->gl_object_name);
159 
160     ret_val = clGetGLObjectInfo(buffer,
161                                 data->gl_object_type,
162                                 data->gl_object_name);
163 
164     test_icd_app_log("Value returned: %p\n", ret_val);
165 
166     return ret_val;
167 
168 }
169 
170 struct clGetGLTextureInfo_st clGetGLTextureInfoData[NUM_ITEMS_clGetGLTextureInfo] = {
171     {NULL, 0, 0, NULL, NULL}
172 };
173 
test_clGetGLTextureInfo(const struct clGetGLTextureInfo_st * data)174 int test_clGetGLTextureInfo(const struct clGetGLTextureInfo_st* data)
175 {
176     cl_int ret_val;
177 
178     test_icd_app_log("clGetGLTextureInfo(%p, %u, %u, %p, %p)\n",
179                      buffer,
180                      data->param_name,
181                      data->param_value_size,
182                      data->param_value,
183                      data->param_value_size_ret);
184 
185     ret_val = clGetGLTextureInfo (buffer,
186                                   data->param_name,
187                                   data->param_value_size,
188                                   data->param_value,
189                                   data->param_value_size_ret);
190 
191     test_icd_app_log("Value returned: %p\n", ret_val);
192 
193     return 0;
194 }
195 
196 struct clEnqueueAcquireGLObjects_st clEnqueueAcquireGLObjectsData[NUM_ITEMS_clEnqueueAcquireGLObjects] = {
197     {NULL, 0, NULL, 0, NULL, NULL}
198 };
199 
test_clEnqueueAcquireGLObjects(const struct clEnqueueAcquireGLObjects_st * data)200 int test_clEnqueueAcquireGLObjects(const struct clEnqueueAcquireGLObjects_st* data)
201 {
202     cl_int ret_val;
203 
204     test_icd_app_log("clEnqueueAcquireGLObjects(%p, %u, %p, %u, %p, %p)\n",
205                      command_queue,
206                      data->num_objects,
207                      data->mem_objects,
208                      data->num_events_in_wait_list,
209                      &event,
210                      &event);
211 
212     ret_val = clEnqueueAcquireGLObjects (command_queue,
213                                          data->num_objects,
214                                          data->mem_objects,
215                                          data->num_events_in_wait_list,
216                                          &event,
217                                          &event);
218 
219     test_icd_app_log("Value returned: %p\n", ret_val);
220 
221     return 0;
222 }
223 
224 struct clEnqueueReleaseGLObjects_st clEnqueueReleaseGLObjectsData[NUM_ITEMS_clEnqueueReleaseGLObjects] = {
225     {NULL, 0, NULL, 0, NULL, NULL}
226 };
227 
test_clEnqueueReleaseGLObjects(const struct clEnqueueReleaseGLObjects_st * data)228 int test_clEnqueueReleaseGLObjects(const struct clEnqueueReleaseGLObjects_st* data)
229 {
230     cl_int ret_val;
231 
232     test_icd_app_log("clEnqueueReleaseGLObjects(%p, %u, %p, %u, %p, %p)\n",
233                      command_queue,
234                      data->num_objects,
235                      data->mem_objects,
236                      data->num_events_in_wait_list,
237                      &event,
238                      &event);
239 
240     ret_val = clEnqueueReleaseGLObjects (command_queue,
241                                          data->num_objects,
242                                          data->mem_objects,
243                                          data->num_events_in_wait_list,
244                                          &event,
245                                          &event);
246 
247 
248     test_icd_app_log("Value returned: %p\n", ret_val);
249 
250     return 0;
251 }
252 
253 struct clCreateEventFromGLsyncKHR_st clCreateEventFromGLsyncKHRData[NUM_ITEMS_clCreateEventFromGLsyncKHR] = {
254     {NULL, NULL, NULL}
255 };
256 
257 typedef cl_event
258 (CL_API_CALL *PFN_clCreateEventFromGLsyncKHR)(cl_context           /* context */,
259                                               cl_GLsync            /* cl_GLsync */,
260                                               cl_int *             /* errcode_ret */);
261 
test_clCreateEventFromGLsyncKHR(const struct clCreateEventFromGLsyncKHR_st * data)262 int test_clCreateEventFromGLsyncKHR(const struct clCreateEventFromGLsyncKHR_st* data)
263 {   cl_event ret_event;
264     PFN_clCreateEventFromGLsyncKHR pfn_clCreateEventFromGLsyncKHR = NULL;
265 
266     test_icd_app_log("clCreateEventFromGLsyncKHR(%p, %p, %p)\n",
267                      context,
268                      data->sync,
269                      data->errcode_ret);
270 
271     pfn_clCreateEventFromGLsyncKHR = (PFN_clCreateEventFromGLsyncKHR)
272       (intptr_t)clGetExtensionFunctionAddress("clCreateEventFromGLsyncKHR");
273     if (!pfn_clCreateEventFromGLsyncKHR) {
274         test_icd_app_log("clGetExtensionFunctionAddress failed!\n");
275         return 1;
276     }
277 
278     ret_event = pfn_clCreateEventFromGLsyncKHR (context,
279                                             data->sync,
280                                             data->errcode_ret);
281 
282     test_icd_app_log("Value returned: %p\n", ret_event);
283     return 0;
284 }
285 
286 struct clGetGLContextInfoKHR_st clGetGLContextInfoKHRData[NUM_ITEMS_clGetGLContextInfoKHR] = {
287     {NULL, 0, 0, NULL, NULL}
288 };
289 
290 typedef cl_int
291 (CL_API_CALL *PFN_clGetGLContextInfoKHR)(const cl_context_properties * /* properties */,
292                                          cl_gl_context_info            /* param_name */,
293                                          size_t                        /* param_value_size */,
294                                          void *                        /* param_value */,
295                                          size_t *                      /* param_value_size_ret */);
296 
test_clGetGLContextInfoKHR(const struct clGetGLContextInfoKHR_st * data)297 int test_clGetGLContextInfoKHR(const struct clGetGLContextInfoKHR_st* data)
298 {
299     cl_int ret_val;
300 
301     PFN_clGetGLContextInfoKHR pfn_clGetGLContextInfoKHR = NULL;
302     test_icd_app_log("clGetGLContextInfoKHR(%p, %u, %u, %p, %p)\n",
303                      context_properties,
304                      data->param_name,
305                      data->param_value_size,
306                      data->param_value,
307                      data->param_value_size_ret);
308 
309     pfn_clGetGLContextInfoKHR = (PFN_clGetGLContextInfoKHR)
310       (intptr_t)clGetExtensionFunctionAddress("clGetGLContextInfoKHR");
311     if (!pfn_clGetGLContextInfoKHR) {
312         test_icd_app_log("clGetExtensionFunctionAddress failed!\n");
313         return 1;
314     }
315 
316     ret_val = pfn_clGetGLContextInfoKHR(context_properties,
317                                     data->param_name,
318                                     data->param_value_size,
319                                     data->param_value,
320                                     data->param_value_size_ret);
321 
322     test_icd_app_log("Value returned: %p\n", ret_val);
323     return 0;
324 
325 }
326 
test_OpenGL_share()327 int test_OpenGL_share()
328 {
329 	int i;
330 
331     for(i=0;i<NUM_ITEMS_clCreateFromGLBuffer;i++)
332 		test_clCreateFromGLBuffer(&clCreateFromGLBufferData[i]);
333 
334     for(i=0;i<NUM_ITEMS_clCreateFromGLTexture;i++)
335 		test_clCreateFromGLTexture(&clCreateFromGLTextureData[i]);
336 
337     for(i=0;i<NUM_ITEMS_clCreateFromGLTexture2D;i++)
338 		test_clCreateFromGLTexture2D(&clCreateFromGLTexture2DData[i]);
339 
340     for(i=0;i<NUM_ITEMS_clCreateFromGLTexture3D;i++)
341 		test_clCreateFromGLTexture3D(&clCreateFromGLTexture3DData[i]);
342 
343     for(i=0;i<NUM_ITEMS_clCreateFromGLRenderbuffer;i++)
344 		test_clCreateFromGLRenderbuffer(&clCreateFromGLRenderbufferData[i]);
345 
346     for(i=0;i<NUM_ITEMS_clGetGLObjectInfo;i++)
347 		test_clGetGLObjectInfo(&clGetGLObjectInfoData[i]);
348 
349     for(i=0;i<NUM_ITEMS_clGetGLTextureInfo;i++)
350 		test_clGetGLTextureInfo(&clGetGLTextureInfoData[i]);
351 
352     for(i=0;i<NUM_ITEMS_clEnqueueAcquireGLObjects;i++)
353 		test_clEnqueueAcquireGLObjects(&clEnqueueAcquireGLObjectsData[i]);
354 
355     for(i=0;i<NUM_ITEMS_clEnqueueReleaseGLObjects;i++)
356 		test_clEnqueueReleaseGLObjects(&clEnqueueReleaseGLObjectsData[i]);
357 
358     for(i=0;i<NUM_ITEMS_clCreateEventFromGLsyncKHR;i++)
359 		test_clCreateEventFromGLsyncKHR(&clCreateEventFromGLsyncKHRData[i]);
360 
361     for(i=0;i<NUM_ITEMS_clGetGLContextInfoKHR;i++)
362 		test_clGetGLContextInfoKHR(&clGetGLContextInfoKHRData[i]);
363 
364     return 0;
365 }
366