… | |
… | |
996 | XPUSH_CLOBJ ("OpenCL::BufferObj", mem); |
996 | XPUSH_CLOBJ ("OpenCL::BufferObj", mem); |
997 | |
997 | |
998 | #if CL_VERSION_1_2 |
998 | #if CL_VERSION_1_2 |
999 | |
999 | |
1000 | void |
1000 | void |
1001 | image (OpenCL::Context self, cl_mem_flags flags, cl_channel_order channel_order, cl_channel_type channel_type, cl_mem_object_type type, size_t width, size_t height, size_t depth, size_t array_size = 0, size_t row_pitch = 0, size_t slice_pitch = 0, cl_uint num_mip_level = 0, cl_uint num_samples = 0, SV *data = &PL_sv_undef) |
1001 | image (OpenCL::Context self, cl_mem_flags flags, cl_channel_order channel_order, cl_channel_type channel_type, cl_mem_object_type type, size_t width, size_t height, size_t depth = 0, size_t array_size = 0, size_t row_pitch = 0, size_t slice_pitch = 0, cl_uint num_mip_level = 0, cl_uint num_samples = 0, SV *data = &PL_sv_undef) |
1002 | PPCODE: |
1002 | PPCODE: |
1003 | STRLEN len; |
1003 | STRLEN len; |
1004 | char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0; |
1004 | char *ptr = SvOK (data) ? SvPVbyte (data, len) : 0; |
1005 | const cl_image_format format = { channel_order, channel_type }; |
1005 | const cl_image_format format = { channel_order, channel_type }; |
1006 | const cl_image_desc desc = { |
1006 | const cl_image_desc desc = { |
… | |
… | |
1199 | DESTROY (OpenCL::Queue self) |
1199 | DESTROY (OpenCL::Queue self) |
1200 | CODE: |
1200 | CODE: |
1201 | clReleaseCommandQueue (self); |
1201 | clReleaseCommandQueue (self); |
1202 | |
1202 | |
1203 | void |
1203 | void |
1204 | enqueue_read_buffer (OpenCL::Queue self, OpenCL::Buffer mem, cl_bool blocking, size_t offset, size_t len, SV *data, ...) |
1204 | read_buffer (OpenCL::Queue self, OpenCL::Buffer mem, cl_bool blocking, size_t offset, size_t len, SV *data, ...) |
|
|
1205 | ALIAS: |
|
|
1206 | enqueue_read_buffer = 0 |
1205 | PPCODE: |
1207 | PPCODE: |
1206 | cl_event ev = 0; |
1208 | cl_event ev = 0; |
1207 | EVENT_LIST (6, items - 6); |
1209 | EVENT_LIST (6, items - 6); |
1208 | |
1210 | |
1209 | SvUPGRADE (data, SVt_PV); |
1211 | SvUPGRADE (data, SVt_PV); |
… | |
… | |
1214 | |
1216 | |
1215 | if (ev) |
1217 | if (ev) |
1216 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1218 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1217 | |
1219 | |
1218 | void |
1220 | void |
1219 | enqueue_write_buffer (OpenCL::Queue self, OpenCL::Buffer mem, cl_bool blocking, size_t offset, SV *data, ...) |
1221 | write_buffer (OpenCL::Queue self, OpenCL::Buffer mem, cl_bool blocking, size_t offset, SV *data, ...) |
|
|
1222 | ALIAS: |
|
|
1223 | enqueue_write_buffer = 0 |
1220 | PPCODE: |
1224 | PPCODE: |
1221 | cl_event ev = 0; |
1225 | cl_event ev = 0; |
1222 | STRLEN len; |
1226 | STRLEN len; |
1223 | char *ptr = SvPVbyte (data, len); |
1227 | char *ptr = SvPVbyte (data, len); |
1224 | EVENT_LIST (5, items - 5); |
1228 | EVENT_LIST (5, items - 5); |
… | |
… | |
1229 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1233 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1230 | |
1234 | |
1231 | #if CL_VERSION_1_2 |
1235 | #if CL_VERSION_1_2 |
1232 | |
1236 | |
1233 | void |
1237 | void |
1234 | enqueue_fill_buffer (OpenCL::Queue self, OpenCL::Buffer mem, SV *data, size_t offset, size_t size, ...) |
1238 | fill_buffer (OpenCL::Queue self, OpenCL::Buffer mem, SV *data, size_t offset, size_t size, ...) |
|
|
1239 | ALIAS: |
|
|
1240 | enqueue_fill_buffer = 0 |
1235 | PPCODE: |
1241 | PPCODE: |
1236 | cl_event ev = 0; |
1242 | cl_event ev = 0; |
1237 | STRLEN len; |
1243 | STRLEN len; |
1238 | char *ptr = SvPVbyte (data, len); |
1244 | char *ptr = SvPVbyte (data, len); |
1239 | EVENT_LIST (5, items - 5); |
1245 | EVENT_LIST (5, items - 5); |
… | |
… | |
1242 | |
1248 | |
1243 | if (ev) |
1249 | if (ev) |
1244 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1250 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1245 | |
1251 | |
1246 | void |
1252 | void |
1247 | enqueue_fill_image (OpenCL::Queue self, OpenCL::Image img, NV r, NV g, NV b, NV a, size_t x, size_t y, size_t z, size_t width, size_t height, size_t depth, ...) |
1253 | fill_image (OpenCL::Queue self, OpenCL::Image img, NV r, NV g, NV b, NV a, size_t x, size_t y, size_t z, size_t width, size_t height, size_t depth, ...) |
|
|
1254 | ALIAS: |
|
|
1255 | enqueue_fill_image = 0 |
1248 | PPCODE: |
1256 | PPCODE: |
1249 | cl_event ev = 0; |
1257 | cl_event ev = 0; |
1250 | STRLEN len; |
1258 | STRLEN len; |
1251 | const size_t origin [3] = { x, y, z }; |
1259 | const size_t origin [3] = { x, y, z }; |
1252 | const size_t region [3] = { width, height, depth }; |
1260 | const size_t region [3] = { width, height, depth }; |
… | |
… | |
1261 | NEED_SUCCESS (GetImageInfo, (img, CL_IMAGE_FORMAT, sizeof (format), &format, 0)); |
1269 | NEED_SUCCESS (GetImageInfo, (img, CL_IMAGE_FORMAT, sizeof (format), &format, 0)); |
1262 | assert (sizeof (fus) == CL_FLOAT + 1 - CL_SNORM_INT8); |
1270 | assert (sizeof (fus) == CL_FLOAT + 1 - CL_SNORM_INT8); |
1263 | if (format.image_channel_data_type < CL_SNORM_INT8 || CL_FLOAT < format.image_channel_data_type) |
1271 | if (format.image_channel_data_type < CL_SNORM_INT8 || CL_FLOAT < format.image_channel_data_type) |
1264 | croak ("enqueue_fill_image: image has unsupported channel type, only opencl 1.2 channel types supported."); |
1272 | croak ("enqueue_fill_image: image has unsupported channel type, only opencl 1.2 channel types supported."); |
1265 | |
1273 | |
1266 | NEED_SUCCESS (EnqueueFillImage, (self, img, c_fus [fus [format.image_channel_data_type]], |
1274 | NEED_SUCCESS (EnqueueFillImage, (self, img, c_fus [fus [format.image_channel_data_type - CL_SNORM_INT8]], |
1267 | origin, region, event_list_count, event_list_ptr, GIMME_V != G_VOID ? &ev : 0)); |
1275 | origin, region, event_list_count, event_list_ptr, GIMME_V != G_VOID ? &ev : 0)); |
1268 | |
1276 | |
1269 | if (ev) |
1277 | if (ev) |
1270 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1278 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1271 | |
1279 | |
1272 | #endif |
1280 | #endif |
1273 | |
1281 | |
1274 | void |
1282 | void |
1275 | enqueue_copy_buffer (OpenCL::Queue self, OpenCL::Buffer src, OpenCL::Buffer dst, size_t src_offset, size_t dst_offset, size_t len, ...) |
1283 | copy_buffer (OpenCL::Queue self, OpenCL::Buffer src, OpenCL::Buffer dst, size_t src_offset, size_t dst_offset, size_t len, ...) |
|
|
1284 | ALIAS: |
|
|
1285 | enqueue_copy_buffer = 0 |
1276 | PPCODE: |
1286 | PPCODE: |
1277 | cl_event ev = 0; |
1287 | cl_event ev = 0; |
1278 | EVENT_LIST (6, items - 6); |
1288 | EVENT_LIST (6, items - 6); |
1279 | |
1289 | |
1280 | NEED_SUCCESS (EnqueueCopyBuffer, (self, src, dst, src_offset, dst_offset, len, event_list_count, event_list_ptr, GIMME_V != G_VOID ? &ev : 0)); |
1290 | NEED_SUCCESS (EnqueueCopyBuffer, (self, src, dst, src_offset, dst_offset, len, event_list_count, event_list_ptr, GIMME_V != G_VOID ? &ev : 0)); |
1281 | |
1291 | |
1282 | if (ev) |
1292 | if (ev) |
1283 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1293 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1284 | |
1294 | |
1285 | void |
1295 | void |
1286 | enqueue_read_buffer_rect (OpenCL::Queue self, OpenCL::Memory buf, cl_bool blocking, size_t buf_x, size_t buf_y, size_t buf_z, size_t host_x, size_t host_y, size_t host_z, size_t width, size_t height, size_t depth, size_t buf_row_pitch, size_t buf_slice_pitch, size_t host_row_pitch, size_t host_slice_pitch, SV *data, ...) |
1296 | read_buffer_rect (OpenCL::Queue self, OpenCL::Memory buf, cl_bool blocking, size_t buf_x, size_t buf_y, size_t buf_z, size_t host_x, size_t host_y, size_t host_z, size_t width, size_t height, size_t depth, size_t buf_row_pitch, size_t buf_slice_pitch, size_t host_row_pitch, size_t host_slice_pitch, SV *data, ...) |
|
|
1297 | ALIAS: |
|
|
1298 | enqueue_read_buffer_rect = 0 |
1287 | PPCODE: |
1299 | PPCODE: |
1288 | cl_event ev = 0; |
1300 | cl_event ev = 0; |
1289 | const size_t buf_origin [3] = { buf_x , buf_y , buf_z }; |
1301 | const size_t buf_origin [3] = { buf_x , buf_y , buf_z }; |
1290 | const size_t host_origin[3] = { host_x, host_y, host_z }; |
1302 | const size_t host_origin[3] = { host_x, host_y, host_z }; |
1291 | const size_t region[3] = { width, height, depth }; |
1303 | const size_t region[3] = { width, height, depth }; |
… | |
… | |
1313 | |
1325 | |
1314 | if (ev) |
1326 | if (ev) |
1315 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1327 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1316 | |
1328 | |
1317 | void |
1329 | void |
1318 | enqueue_write_buffer_rect (OpenCL::Queue self, OpenCL::Memory buf, cl_bool blocking, size_t buf_x, size_t buf_y, size_t buf_z, size_t host_x, size_t host_y, size_t host_z, size_t width, size_t height, size_t depth, size_t buf_row_pitch, size_t buf_slice_pitch, size_t host_row_pitch, size_t host_slice_pitch, SV *data, ...) |
1330 | write_buffer_rect (OpenCL::Queue self, OpenCL::Memory buf, cl_bool blocking, size_t buf_x, size_t buf_y, size_t buf_z, size_t host_x, size_t host_y, size_t host_z, size_t width, size_t height, size_t depth, size_t buf_row_pitch, size_t buf_slice_pitch, size_t host_row_pitch, size_t host_slice_pitch, SV *data, ...) |
|
|
1331 | ALIAS: |
|
|
1332 | enqueue_write_buffer_rect = 0 |
1319 | PPCODE: |
1333 | PPCODE: |
1320 | cl_event ev = 0; |
1334 | cl_event ev = 0; |
1321 | const size_t buf_origin [3] = { buf_x , buf_y , buf_z }; |
1335 | const size_t buf_origin [3] = { buf_x , buf_y , buf_z }; |
1322 | const size_t host_origin[3] = { host_x, host_y, host_z }; |
1336 | const size_t host_origin[3] = { host_x, host_y, host_z }; |
1323 | const size_t region[3] = { width, height, depth }; |
1337 | const size_t region[3] = { width, height, depth }; |
… | |
… | |
1346 | |
1360 | |
1347 | if (ev) |
1361 | if (ev) |
1348 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1362 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1349 | |
1363 | |
1350 | void |
1364 | void |
1351 | enqueue_copy_buffer_rect (OpenCL::Queue self, OpenCL::Buffer src, OpenCL::Buffer dst, size_t src_x, size_t src_y, size_t src_z, size_t dst_x, size_t dst_y, size_t dst_z, size_t width, size_t height, size_t depth, size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch, size_t dst_slice_pitch, ...) |
1365 | copy_buffer_rect (OpenCL::Queue self, OpenCL::Buffer src, OpenCL::Buffer dst, size_t src_x, size_t src_y, size_t src_z, size_t dst_x, size_t dst_y, size_t dst_z, size_t width, size_t height, size_t depth, size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch, size_t dst_slice_pitch, ...) |
|
|
1366 | ALIAS: |
|
|
1367 | enqueue_copy_buffer_rect = 0 |
1352 | PPCODE: |
1368 | PPCODE: |
1353 | cl_event ev = 0; |
1369 | cl_event ev = 0; |
1354 | const size_t src_origin[3] = { src_x, src_y, src_z }; |
1370 | const size_t src_origin[3] = { src_x, src_y, src_z }; |
1355 | const size_t dst_origin[3] = { dst_x, dst_y, dst_z }; |
1371 | const size_t dst_origin[3] = { dst_x, dst_y, dst_z }; |
1356 | const size_t region[3] = { width, height, depth }; |
1372 | const size_t region[3] = { width, height, depth }; |
… | |
… | |
1360 | |
1376 | |
1361 | if (ev) |
1377 | if (ev) |
1362 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1378 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1363 | |
1379 | |
1364 | void |
1380 | void |
1365 | enqueue_read_image (OpenCL::Queue self, OpenCL::Image src, cl_bool blocking, size_t src_x, size_t src_y, size_t src_z, size_t width, size_t height, size_t depth, size_t row_pitch, size_t slice_pitch, SV *data, ...) |
1381 | read_image (OpenCL::Queue self, OpenCL::Image src, cl_bool blocking, size_t src_x, size_t src_y, size_t src_z, size_t width, size_t height, size_t depth, size_t row_pitch, size_t slice_pitch, SV *data, ...) |
|
|
1382 | ALIAS: |
|
|
1383 | enqueue_read_image = 0 |
1366 | PPCODE: |
1384 | PPCODE: |
1367 | cl_event ev = 0; |
1385 | cl_event ev = 0; |
1368 | const size_t src_origin[3] = { src_x, src_y, src_z }; |
1386 | const size_t src_origin[3] = { src_x, src_y, src_z }; |
1369 | const size_t region[3] = { width, height, depth }; |
1387 | const size_t region[3] = { width, height, depth }; |
1370 | EVENT_LIST (12, items - 12); |
1388 | EVENT_LIST (12, items - 12); |
… | |
… | |
1385 | |
1403 | |
1386 | if (ev) |
1404 | if (ev) |
1387 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1405 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1388 | |
1406 | |
1389 | void |
1407 | void |
1390 | enqueue_write_image (OpenCL::Queue self, OpenCL::Image dst, cl_bool blocking, size_t dst_x, size_t dst_y, size_t dst_z, size_t width, size_t height, size_t depth, size_t row_pitch, size_t slice_pitch, SV *data, ...) |
1408 | write_image (OpenCL::Queue self, OpenCL::Image dst, cl_bool blocking, size_t dst_x, size_t dst_y, size_t dst_z, size_t width, size_t height, size_t depth, size_t row_pitch, size_t slice_pitch, SV *data, ...) |
|
|
1409 | ALIAS: |
|
|
1410 | enqueue_write_image = 0 |
1391 | PPCODE: |
1411 | PPCODE: |
1392 | cl_event ev = 0; |
1412 | cl_event ev = 0; |
1393 | const size_t dst_origin[3] = { dst_x, dst_y, dst_z }; |
1413 | const size_t dst_origin[3] = { dst_x, dst_y, dst_z }; |
1394 | const size_t region[3] = { width, height, depth }; |
1414 | const size_t region[3] = { width, height, depth }; |
1395 | STRLEN len; |
1415 | STRLEN len; |
… | |
… | |
1411 | |
1431 | |
1412 | if (ev) |
1432 | if (ev) |
1413 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1433 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1414 | |
1434 | |
1415 | void |
1435 | void |
1416 | enqueue_copy_image (OpenCL::Queue self, OpenCL::Image src, OpenCL::Image dst, size_t src_x, size_t src_y, size_t src_z, size_t dst_x, size_t dst_y, size_t dst_z, size_t width, size_t height, size_t depth, ...) |
1436 | copy_image (OpenCL::Queue self, OpenCL::Image src, OpenCL::Image dst, size_t src_x, size_t src_y, size_t src_z, size_t dst_x, size_t dst_y, size_t dst_z, size_t width, size_t height, size_t depth, ...) |
|
|
1437 | ALIAS: |
|
|
1438 | enqueue_copy_image = 0 |
1417 | PPCODE: |
1439 | PPCODE: |
1418 | cl_event ev = 0; |
1440 | cl_event ev = 0; |
1419 | const size_t src_origin[3] = { src_x, src_y, src_z }; |
1441 | const size_t src_origin[3] = { src_x, src_y, src_z }; |
1420 | const size_t dst_origin[3] = { dst_x, dst_y, dst_z }; |
1442 | const size_t dst_origin[3] = { dst_x, dst_y, dst_z }; |
1421 | const size_t region[3] = { width, height, depth }; |
1443 | const size_t region[3] = { width, height, depth }; |
… | |
… | |
1425 | |
1447 | |
1426 | if (ev) |
1448 | if (ev) |
1427 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1449 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1428 | |
1450 | |
1429 | void |
1451 | void |
1430 | enqueue_copy_image_to_buffer (OpenCL::Queue self, OpenCL::Image src, OpenCL::Buffer dst, size_t src_x, size_t src_y, size_t src_z, size_t width, size_t height, size_t depth, size_t dst_offset, ...) |
1452 | copy_image_to_buffer (OpenCL::Queue self, OpenCL::Image src, OpenCL::Buffer dst, size_t src_x, size_t src_y, size_t src_z, size_t width, size_t height, size_t depth, size_t dst_offset, ...) |
|
|
1453 | ALIAS: |
|
|
1454 | enqueue_copy_image_to_buffer = 0 |
1431 | PPCODE: |
1455 | PPCODE: |
1432 | cl_event ev = 0; |
1456 | cl_event ev = 0; |
1433 | const size_t src_origin[3] = { src_x, src_y, src_z }; |
1457 | const size_t src_origin[3] = { src_x, src_y, src_z }; |
1434 | const size_t region[3] = { width, height, depth }; |
1458 | const size_t region[3] = { width, height, depth }; |
1435 | EVENT_LIST (10, items - 10); |
1459 | EVENT_LIST (10, items - 10); |
… | |
… | |
1438 | |
1462 | |
1439 | if (ev) |
1463 | if (ev) |
1440 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1464 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1441 | |
1465 | |
1442 | void |
1466 | void |
1443 | enqueue_copy_buffer_to_image (OpenCL::Queue self, OpenCL::Buffer src, OpenCL::Image dst, size_t src_offset, size_t dst_x, size_t dst_y, size_t dst_z, size_t width, size_t height, size_t depth, ...) |
1467 | copy_buffer_to_image (OpenCL::Queue self, OpenCL::Buffer src, OpenCL::Image dst, size_t src_offset, size_t dst_x, size_t dst_y, size_t dst_z, size_t width, size_t height, size_t depth, ...) |
|
|
1468 | ALIAS: |
|
|
1469 | enqueue_copy_buffer_to_image = 0 |
1444 | PPCODE: |
1470 | PPCODE: |
1445 | cl_event ev = 0; |
1471 | cl_event ev = 0; |
1446 | const size_t dst_origin[3] = { dst_x, dst_y, dst_z }; |
1472 | const size_t dst_origin[3] = { dst_x, dst_y, dst_z }; |
1447 | const size_t region[3] = { width, height, depth }; |
1473 | const size_t region[3] = { width, height, depth }; |
1448 | EVENT_LIST (10, items - 10); |
1474 | EVENT_LIST (10, items - 10); |
… | |
… | |
1451 | |
1477 | |
1452 | if (ev) |
1478 | if (ev) |
1453 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1479 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1454 | |
1480 | |
1455 | void |
1481 | void |
1456 | enqueue_task (OpenCL::Queue self, OpenCL::Kernel kernel, ...) |
1482 | task (OpenCL::Queue self, OpenCL::Kernel kernel, ...) |
|
|
1483 | ALIAS: |
|
|
1484 | enqueue_task = 0 |
1457 | PPCODE: |
1485 | PPCODE: |
1458 | cl_event ev = 0; |
1486 | cl_event ev = 0; |
1459 | EVENT_LIST (2, items - 2); |
1487 | EVENT_LIST (2, items - 2); |
1460 | |
1488 | |
1461 | NEED_SUCCESS (EnqueueTask, (self, kernel, event_list_count, event_list_ptr, GIMME_V != G_VOID ? &ev : 0)); |
1489 | NEED_SUCCESS (EnqueueTask, (self, kernel, event_list_count, event_list_ptr, GIMME_V != G_VOID ? &ev : 0)); |
1462 | |
1490 | |
1463 | if (ev) |
1491 | if (ev) |
1464 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1492 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1465 | |
1493 | |
1466 | void |
1494 | void |
1467 | enqueue_nd_range_kernel (OpenCL::Queue self, OpenCL::Kernel kernel, SV *global_work_offset, SV *global_work_size, SV *local_work_size = &PL_sv_undef, ...) |
1495 | nd_range_kernel (OpenCL::Queue self, OpenCL::Kernel kernel, SV *global_work_offset, SV *global_work_size, SV *local_work_size = &PL_sv_undef, ...) |
|
|
1496 | ALIAS: |
|
|
1497 | enqueue_nd_range_kernel = 0 |
1468 | PPCODE: |
1498 | PPCODE: |
1469 | cl_event ev = 0; |
1499 | cl_event ev = 0; |
1470 | size_t *gwo = 0, *gws, *lws = 0; |
1500 | size_t *gwo = 0, *gws, *lws = 0; |
1471 | int gws_len; |
1501 | int gws_len; |
1472 | size_t *lists; |
1502 | size_t *lists; |
… | |
… | |
1516 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1546 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1517 | |
1547 | |
1518 | #if cl_apple_gl_sharing || cl_khr_gl_sharing |
1548 | #if cl_apple_gl_sharing || cl_khr_gl_sharing |
1519 | |
1549 | |
1520 | void |
1550 | void |
1521 | enqueue_acquire_gl_objects (OpenCL::Queue self, SV *objects, ...) |
1551 | acquire_gl_objects (OpenCL::Queue self, SV *objects, ...) |
|
|
1552 | ALIAS: |
|
|
1553 | enqueue_acquire_gl_objects = 0 |
1522 | ALIAS: |
1554 | ALIAS: |
1523 | enqueue_release_gl_objects = 1 |
1555 | enqueue_release_gl_objects = 1 |
1524 | PPCODE: |
1556 | PPCODE: |
1525 | if (!SvROK (objects) || SvTYPE (SvRV (objects)) != SVt_PVAV) |
1557 | if (!SvROK (objects) || SvTYPE (SvRV (objects)) != SVt_PVAV) |
1526 | croak ("OpenCL::Queue::enqueue_acquire/release_gl_objects argument 'objects' must be an arrayref with memory objects, in call"); |
1558 | croak ("OpenCL::Queue::enqueue_acquire/release_gl_objects argument 'objects' must be an arrayref with memory objects, in call"); |
… | |
… | |
1544 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1576 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1545 | |
1577 | |
1546 | #endif |
1578 | #endif |
1547 | |
1579 | |
1548 | void |
1580 | void |
1549 | enqueue_wait_for_events (OpenCL::Queue self, ...) |
1581 | wait_for_events (OpenCL::Queue self, ...) |
|
|
1582 | ALIAS: |
|
|
1583 | enqueue_wait_for_events = 0 |
1550 | CODE: |
1584 | CODE: |
1551 | EVENT_LIST (1, items - 1); |
1585 | EVENT_LIST (1, items - 1); |
1552 | #if PREFER_1_1 |
1586 | #if PREFER_1_1 |
1553 | NEED_SUCCESS (EnqueueWaitForEvents, (self, event_list_count, event_list_ptr)); |
1587 | NEED_SUCCESS (EnqueueWaitForEvents, (self, event_list_count, event_list_ptr)); |
1554 | #else |
1588 | #else |
1555 | NEED_SUCCESS (EnqueueBarrierWithWaitList, (self, event_list_count, event_list_ptr, 0)); |
1589 | NEED_SUCCESS (EnqueueBarrierWithWaitList, (self, event_list_count, event_list_ptr, 0)); |
1556 | #endif |
1590 | #endif |
1557 | |
1591 | |
1558 | void |
1592 | void |
1559 | enqueue_marker (OpenCL::Queue self, ...) |
1593 | marker (OpenCL::Queue self, ...) |
|
|
1594 | ALIAS: |
|
|
1595 | enqueue_marker = 0 |
1560 | PPCODE: |
1596 | PPCODE: |
1561 | cl_event ev = 0; |
1597 | cl_event ev = 0; |
1562 | EVENT_LIST (1, items - 1); |
1598 | EVENT_LIST (1, items - 1); |
1563 | #if PREFER_1_1 |
1599 | #if PREFER_1_1 |
1564 | if (!event_list_count) |
1600 | if (!event_list_count) |
… | |
… | |
1577 | #endif |
1613 | #endif |
1578 | if (ev) |
1614 | if (ev) |
1579 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1615 | XPUSH_CLOBJ ("OpenCL::Event", ev); |
1580 | |
1616 | |
1581 | void |
1617 | void |
1582 | enqueue_barrier (OpenCL::Queue self, ...) |
1618 | barrier (OpenCL::Queue self, ...) |
|
|
1619 | ALIAS: |
|
|
1620 | enqueue_barrier = 0 |
1583 | PPCODE: |
1621 | PPCODE: |
1584 | cl_event ev = 0; |
1622 | cl_event ev = 0; |
1585 | EVENT_LIST (1, items - 1); |
1623 | EVENT_LIST (1, items - 1); |
1586 | #if PREFER_1_1 |
1624 | #if PREFER_1_1 |
1587 | if (!event_list_count && GIMME_V == G_VOID) |
1625 | if (!event_list_count && GIMME_V == G_VOID) |