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